条件PIVOT /转换问题

时间:2010-12-31 03:47:09

标签: sql sql-server pivot transformation

我有一个包含三列的表,我们称之为ID1,ID2和Value。

示例数据:

ID  ID1 Value
1   1   0
1   2   1
1   3   1
1   3   2
1   4   0
1   4   1
1   5   0
1   5   2
2   1   2

值限制为0,1或2。

我需要做的是将此数据转换/转换为基于列的计数,每个可能的值出现的次数,按ID ID1分组。上面的输出应该是:

ID  ID1  Val0  Val1  Val2
1   1    1     0     0
1   2    0     1     0
1   3    0     1     1
1   4    1     1     0
1   5    1     0     1
2   1    0     0     1

我正在使用SQL Server 2008.我该怎么做?

1 个答案:

答案 0 :(得分:3)

SELECT ID,
       ID1,
       COUNT(CASE WHEN Value=0 THEN 1 END) AS Val0,
       COUNT(CASE WHEN Value=1 THEN 1 END) AS Val1,
       COUNT(CASE WHEN Value=2 THEN 1 END) AS Val2
FROM   your_table
GROUP  BY ID,
          ID1