2017-02-09 13 views
-2

Старый РезультатOracle строки в колонке

Column_Name 
A 
B 
C 
D 

Новый требуемый результат

Column_Name 
'A', 'B', 'C', 'D' 

Ограничения (Count неизвестно. Может быть, A, B, C или A, B, C, D, E и так далее.

+2

SQL-запрос возвращает набор результатов с фиксированным числом определенных столбцов. Вы можете это сделать, но для этого требуется динамический SQL. –

+2

Если вы ищете, что каждая строка будет ее собственным столбцом, @GordonLinoff верен. Если вы хотите просто заполнить значения в одном поле, 'LISTAGG' может работать для вас. –

ответ

1

Учитывая ваш вопрос буквально, у вас есть запрос, возвращающий один столбец с переменным числом строк, скажут

select 'A' column_name from dual union all 
select 'B' column_name from dual union all 
select 'C' column_name from dual union all 
select 'D' column_name from dual 

, и вам нужно получить результат в одной строке с одним столбцом, содержащим конкатенацию значений, возвращаемых исходным запросом, завернутых в ''; в вашем примере, вам нужно:

Column_Name 
'A', 'B', 'C', 'D' 

Если это верно, то, возможно, просто нужно listagg:

select listagg('''' || column_name || '''', ', ') within group (order by column_name) 
from (
     select 'A' column_name from dual union all 
     select 'B' column_name from dual union all 
     select 'C' column_name from dual union all 
     select 'D' column_name from dual 
    ) yourQuery 
0

Если вы хотите, чтобы сделать список всех значений в определенном столбце за каждый другой вы можете использовать LISTAGG.
Например:

SELECT LISTAGG(Column_Name, ', ') WITHIN GROUP (ORDER BY Column_Name) "Column_Listing" 
FROM TableA;