IamIC
IamIC

Reputation: 18259

Conditional PIVOT/transform problem

I have a table with three columns, which we'll call ID1, ID2, and Value.

Sample data:

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

Value is limited to 0, 1, or 2.

What I need to do is pivot/transform this data into a column-based count of how many times each possible Value appears, grouped by ID, ID1. The output of the above should be:

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

I'm using SQL Server 2008. How do I do this?

Upvotes: 1

Views: 261

Answers (1)

Martin Smith
Martin Smith

Reputation: 453563

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  

Upvotes: 3

Related Questions