Sql 如何将行转换为具有多行和空值的列

Sql 如何将行转换为具有多行和空值的列,sql,sql-server,tsql,Sql,Sql Server,Tsql,我希望你能在这一点上帮助我: 我想创建一个查询,以便将表的记录作为列,但这些列可以有多行 例如: | Id | Value | ColumnName | | 1 | A | Q1 | | 2 | B | Q2 | | 3 | C | Q2 | | 4 | D | Q2 | | 5 | E | Q3 | | 6 | F

我希望你能在这一点上帮助我: 我想创建一个查询,以便将表的记录作为列,但这些列可以有多行

例如:

| 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 
如何在一个查询中获得此结果?(我真的需要在查询中包含它,因为我需要为此创建一个视图)


谢谢和问候

您可以尝试使用pivot

select pv.* from 
tablename
pivot
(max(Value) for columnname in ([Q1],[Q2],[Q3])) as pv

您可以尝试使用pivot

select pv.* from 
tablename
pivot
(max(Value) for columnname in ([Q1],[Q2],[Q3])) as pv

您可以将条件聚合与
行数()一起使用


您可以将条件聚合与
行数()一起使用


您使用的是哪个版本的SQL Server?2012? 2016年?版本是2014您使用的是哪个版本的SQL Server?2012? 2016年?版本为2014年