Условная задача PIVOT / transform - PullRequest
       8

Условная задача PIVOT / transform

1 голос
/ 31 декабря 2010

У меня есть таблица с тремя столбцами, которые мы будем называть 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 Ответ

3 голосов
/ 31 декабря 2010
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  
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...