Sql 如何将不同的列值转换为列名,并将其他列值映射到每个列名
我正在使用Oracle SQL将表转换为下面所示的输出。在我这边,我试着做枢轴和联接,但输出似乎不匹配。在此方面的任何帮助都将不胜感激Sql 如何将不同的列值转换为列名,并将其他列值映射到每个列名,sql,transpose,Sql,Transpose,我正在使用Oracle SQL将表转换为下面所示的输出。在我这边,我试着做枢轴和联接,但输出似乎不匹配。在此方面的任何帮助都将不胜感激 Type | Name -----+----------- D | Aamina D | Julia D | Priya P | Ashley P | Belvet S | Christeen S | Jane S | Jenny A | Eve A | Jennifer A | Ketty A
Type | Name
-----+-----------
D | Aamina
D | Julia
D | Priya
P | Ashley
P | Belvet
S | Christeen
S | Jane
S | Jenny
A | Eve
A | Jennifer
A | Ketty
A | Samantha
需要这种输出
D | P | S | A
-------+--------+-----------+----------
Aamina | Ashley | Christeen | Eve
Julia | Belvet | Jane | Jennifer
Priya | NULL | Jenny | Ketty
NULL | NULL | NULL | Samantha
您可以使用条件聚合和
行数()
您可以使用条件聚合和行数()
谢谢@gordon。这正是我错过的Tanks@gordon。这正是我所缺少的
select max(case when type = 'D' then name end) as d,
max(case when type = 'P' then name end) as p,
max(case when type = 'S' then name end) as s,
max(case when type = 'A' then name end) as a
from (select t.*,
row_number() over (partition by type) as seqnum
from t
) t
group by seqnum
order by seqnum;