我正在使用SQL Server 2008,并且希望将数据转换为:
资料集:
ID Item Columns Result 1 1 X A 2 1 Y B 3 1 Z C 4 2 X D 5 2 Y E 6 2 Z NULL 7 3 X F 8 3 Y G 9 3 Z H
所需结果:
Item X Y Z 1 A B C 2 D E NULL 3 F G H
目前,我正在执行以下操作,然后将所需的列粘贴到Excel中:
Select * from thisTable where Column=X Select * from thisTable where Column=Y Select * from thisTable where Column=Z
但是,并非所有匹配的行都不能仅仅并排击打表。对于没有Result的列,我希望显示NULL来填充行以使它们都具有相同数量的记录。
我查了一下PIVOT,但我认为这在这里不起作用…这种数据转换称为什么类型?我不认为这是交叉表…
谢谢!
您可以使用条件聚合来执行交叉表:
SELECT Item, [X] = MAX(CASE WHEN [Columns] = 'X' THEN Result END), [Y] = MAX(CASE WHEN [Columns] = 'Y' THEN Result END), [Z] = MAX(CASE WHEN [Columns] = 'Z' THEN Result END) FROM thisTable GROUP BY Item