2013-12-05 3 views
2

У меня есть эти данные в моей базе данных:SQL Query; По горизонтали и вертикали

+-------------+------------+--------------------------------------+ 
| resource_id | rkident_id |    stringval    | 
+-------------+------------+--------------------------------------+ 
|   21 |   15 | Hostname1       | 
|   21 |   16 | vm-143        | 
|   21 |   17 | 91345645-1E18-4C76-B119-C14E950FB086 | 
|   22 |   15 | Hostname2       | 
|   22 |   16 | vm-179        | 
|   22 |   17 | 91345645-1E18-4C76-B119-C14E950FB086 | 
+-------------+------------+--------------------------------------+ 

Но я хотел бы, чтобы отобразить это следующим образом:

+-------------+-------------+--------------------------------------+ 
| IDENTVALUE1 | IDENTVALUE2 |    IDENTVALUE3    | 
+-------------+-------------+--------------------------------------+ 
| Hostname1 | vm-143  | 91345645-1E18-4C76-B119-C14E950FB086 | 
| Hostname2 | vm-179  | 91345645-1E18-4C76-B119-C14E950FB086 | 
+-------------+-------------+--------------------------------------+ 

Пожалуйста, помогите, спасибо!

+0

Дубликат: http://stackoverflow.com/questions/19802361/multi-column-pivot-sql-server & http://stackoverflow.com/questions/947281/multiple-column-pivot-in-t- sql & http://stackoverflow.com/questions/18575984/pivot-a-fixed-multiple-column-table-in-sql-server – Anon

+0

Вы пометили его 'univot', потому что хотите использовать эту технику или что-то еще ОК? – Chains

+0

Это фактически свод, который может быть выполнен с помощью PIVOT или вручную с MAX (CASE ...). – Anon

ответ

2

Это следует сделать это:

SELECT 
    max(CASE WHEN rkident_id = 15 THEN stringval END) IDENTVALUE1, 
    max(CASE WHEN rkident_id = 16 THEN stringval END) IDENTVALUE2, 
    max(CASE WHEN rkident_id = 17 THEN stringval END) IDENTVALUE3 
FROM t 
GROUP BY resource_id 

Выход:

| IDENTVALUE1 | IDENTVALUE2 |       IDENTVALUE3 | 
|-------------|-------------|--------------------------------------| 
| Hostname1 |  vm-143 | 91345645-1E18-4C76-B119-C14E950FB086 | 
| Hostname2 |  vm-179 | 91345645-1E18-4C76-B119-C14E950FB086 | 

Fiddle here.

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