繁体   English   中英

如何将行转换为具有多个行和null的列

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM