【发布时间】:2018-10-30 02:58:42
【问题描述】:
在这里需要一个简单的帮助。尝试了各种解决方案,例如使用案例和行号,枢轴但无法找到合适的解决方案。
基本上我想使用组名称值并找到所有非空值和不同值并将结果显示在一行中。
输入
Name | Color
John | Blue
John | Green
Mary | NULL
Mary | Yellow
Mary | Pink
Mary | Pink
预期输出
Name | Color1 | Color2 | Color3
John | Blue | Green | NULL
Mary | Yellow | Pink | NULL
目前我已经提出了以下查询,但看起来与我想要的结果相去甚远。感谢您的帮助,谢谢!
select Name,
max(case when seqnum = 1 then Color end) as Color1,
max(case when seqnum = 2 then Color end) as Color2,
max(case when seqnum = 3 then Color end) as Color3
from (select table.*, row_number() over (partition by Name order by Name) as seqnum
from table
) table
group by Name
【问题讨论】:
-
您使用的是哪个 dbms?
-
使用 SQL 服务器
标签: sql sql-server