2017-02-09 119 views
-2

旧结果甲骨文行要在列

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;