我有一个包含三列的表,我们称之为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.我该怎么做?
答案 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