我在 Oracle 中有以下数据
Number Text
12345 ab
12345 abc
12345 acbd
如何将其转换为:
Number Text1 Text2 Text3
12345 ab abc abcd
如何在 Oracle 中使用 SQL 来做到这一点?
为了将多行数据旋转成列,首先我会使用row_number()
,然后您可以使用带有 CASE 表达式的聚合函数来获得最终结果:
select "Number",
max(case when seq = 1 then "Text" end) Text1,
max(case when seq = 2 then "Text" end) Text2,
max(case when seq = 3 then "Text" end) Text3
from
(
select "Number", "Text",
row_number() over(partition by "Number" order by "Text") seq
from yourtable
) d
group by "Number";