我在表x中有列a,b。我想将此列数据更改为行。 可能在表中有重复的值,但在行的列中只更改不同的值。
E.G:
a b
1 2
1 11
3 4
5 6
7 8
9 10
......etc
result 1 (query 1) should be 1-2,1-11,3-4,5-6,7-8,9-10.....
等
result 2 (query 2) should b 1,3,5,7,9....
等(只有一个1必须来,因为我们有列a的重复数据)
我如何在oracle SQL中实现这一点。
请帮忙。
答案 0 :(得分:0)
对于Oracle 11,使用函数listagg()并在第一个查询中连接列,在第二个 - 首先选择不同的值。
查询1:
select listagg(a||'-'||b, ',') within group (order by a, b) result from t
RESULT
------------------------------
1-2,1-11,3-4,5-6,7-8,9-10
查询2:
select listagg(a, ',') within group (order by a) result
from (select distinct a from t)
RESULT
------------------------------
1,3,5,7,9
对于旧版本,您可以使用wmsys.wm_concat。