小编典典

SQL转换交叉表数据透视表

sql

我正在使用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,但我认为这在这里不起作用…这种数据转换称为什么类型?我不认为这是交叉表…

谢谢!


阅读 161

收藏
2021-03-10

共1个答案

小编典典

您可以使用条件聚合来执行交叉表:

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
2021-03-10