在多列中分配行

时间:2012-06-13 11:27:33

标签: sql-server

我有一个名为'MyTable'的表格,如下所示:

ID | Item | Type | Value
1  | 100  | 60   | 37
2  | 100  | 72   | 24
3  | 200  | 60   | 18
4  | 300  | 60   | 43
5  | 300  | 72   | 76

我想整理一个MS SQL查询以获得以下内容:

Item | Type_60 | Type_72
100  | 37      | 24
200  | 18      | NULL
300  | 43      | 76

我很可能不允许使用PIVOT(无论如何我不明白如何使用PIVOT!)。

到目前为止,我只能提出以下内容:

select Item,
    CASE Type WHEN 60 THEN Value END as 'Type_60',
    CASE Type WHEN 72 THEN Value END as 'Type_72'
from MyTable

但这给了我以下内容:

Item | Type_60 | Type_72
100  | 37      | NULL
100  | NULL    | 24
200  | 18      | NULL
300  | 43      | NULL
300  | NULL    | 76

任何人都可以打发我吗?

1 个答案:

答案 0 :(得分:0)

你几乎就在那里,只需在最后添加group by Item,然后将case包装在一个聚合中:

select Item,
    max(CASE Type WHEN 60 THEN Value END) as 'Type_60',
    max(CASE Type WHEN 72 THEN Value END) as 'Type_72'
from MyTable
group by Item