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

我正在使用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    | 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;