2015-03-02 59 views
0

我有一個這樣的表:SQL查詢來輸出表在網格

| head | attribute | value | 
| h1 | attr1  | val1 | 
| h1 | attr2  | val2 | 
| h1 | attr3  | val3 | 
| h2 | attr1  | val1 | 
| h2 | attr2  | val2 | 
| h2 | attr3  | val3 | 
| h3 | attr1  | val1 | 
| h3 | attr2  | val2 | 
| h3 | attr3  | val3 | 

,我需要呈現在這樣:

| head | attr1 | attr2 | attr3 | 
| h1 | val1 | val2 | val3 | 
| h2 | val1 | val2 | val3 | 
| h3 | val1 | val2 | val3 | 

什麼是最好的解決辦法?我可以通過頭排序所有記錄並從代碼中進行解析來渲染。但有可能將它從SQL分組?

+0

你在看什麼是數據透視表。這裏回答了很多問題。看它。 – 2015-03-02 23:26:55

+0

查看對此答案:http://stackoverflow.com/questions/1343145/tsql-pivot-without-aggregate-function – Kevin 2015-03-02 23:36:42

+0

答案是不存儲像屬性/值對的數據。它只會導致你的問題。 – jarlh 2015-03-03 07:59:51

回答

2
declare @t table (head nchar(2), attribute nchar(5),value nchar(4)) 

insert @t 
values ('h1','attr1','val1') 
,('h1','attr2','val2') 
,('h1','attr3','val3') 
,('h2','attr1','val1') 
,('h2','attr2','val2') 
,('h2','attr3','val3') 
,('h3','attr1','val1') 
,('h3','attr2','val2') 
,('h3','attr3','val3') 

select head,[attr1],[attr2],[attr3] 
from @t 
pivot (max(value) for attribute in ([attr1],[attr2],[attr3])) p