如何透视sql server表

时间:2014-07-13 15:38:59

标签: sql sql-server tsql pivot

我想知道我是否可以转过来

id     part_id,   type,    value
1      1         'type1'  'aaaa'
2      1         'type2'  'bbbb'
3      1         'type3'  'cccc'
4      2         'type1'  'dddd'
5      2         'type2'  'eeee'
6      2         'type3'  'ffff'

进入这个

part_id,   type1value,   type2value,   type3value
1          aaaa          bbbb          cccc
2          dddd          eeee          ffff

除了TSQL之外什么都不用。

我认为" pivot"命令可以完成这项工作,但我似乎无法使其发挥作用......

我需要帮助!

1 个答案:

答案 0 :(得分:-1)

以下是您需要的正确PIVOT格式:

set nocount on;

with data as ( select * from ( values
        ( 1,  1,  'type1',  'aaaa')
       ,( 2,  1,  'type2',  'bbbb')
       ,( 3,  1,  'type3',  'cccc')
       ,( 4,  2,  'type1',  'dddd')
       ,( 5,  2,  'type2',  'eeee')
       ,( 6,  2,  'type3',  'ffff')
    )data(id,part_id,type,value)
)
select
     part_id
    ,max(coalesce(type1,' ')) as type1
    ,max(coalesce(type2,' ')) as type2
    ,max(coalesce(type3,' ')) as type3
from data
pivot (max(value) for type in (type1, type2, type3) ) pvt
group by
    part_id
;

根据需要很好地返回以下内容:

part_id     type1 type2 type3
----------- ----- ----- -----
1           aaaa  bbbb  cccc
2           dddd  eeee  ffff