2012-06-13 2 views
0

У меня есть таблица с именем «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 (так или иначе я не понял, как использовать для этой цели!).

До сих пор я только мог выйти со следующим:

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 

Может кто-нибудь hlep меня?

ответ

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 
+0

С группой я получаю сообщение об ошибке: 'столбца«Тип»недопустим в избранном потому что он не содержится ни в агрегатной функции, ни в предложении GROUP BY. ... Я попытаюсь изучить основы группы с помощью ... – rodedo

+0

Вы правы, я должен был добавить агрегат типа 'min' или 'max' или' avg'. Ответ обновлен – Andomar

Смежные вопросы