[英]How to convert rows to columns with multiple rows and nulls
我希望您能在这一点上对我有所帮助:我想创建一个查询,以便将表的记录作为列,但是此列可以有多行。
例:
| Id | Value | ColumnName |
| 1 | A | Q1 |
| 2 | B | Q2 |
| 3 | C | Q2 |
| 4 | D | Q2 |
| 5 | E | Q3 |
| 6 | F | Q3 |
这就是我要的:
| Q1 | Q2 | Q3
| A | B | E
| NULL | C | F
| NULL | D | NULL
如何在一个查询中得到此结果? (我确实需要在查询中使用它,因为我需要为此创建一个视图)
谢谢并恭祝安康!
您可以对row_number()
使用条件聚合:
select max(case when columnname = 'Q1' then value end) as q1,
max(case when columnname = 'Q2' then value end) as q2,
max(case when columnname = 'Q3' then value end) as q3
from (select t.*,
row_number() over (partition by columnname order by id) as seqnum
from t
) t
group by seqnum;
您可以尝试使用数据透视
select pv.* from
tablename
pivot
(max(Value) for columnname in ([Q1],[Q2],[Q3])) as pv
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.