SQL Pivot列,具有相同列的多个值

时间:2015-06-04 00:53:29

标签: sql pivot

尝试透视可能包含多个具有相同值的行的表结果 到目前为止,我的数据看起来像这样。

Nbr      Person     Test

33      Barry.      Prim
33      Brian       Sup
33      Burke RT    1st
33      Ray         Add
33      Jake        Add
33      Smith       Add

我正试图将其转动,使其看起来像这样:

Nbr   Prim    Sup     1st       Add   Add2       Add3

33   Barry   Brian   Burke      Ray   Jake       Smith

这是我到目前为止使用正常的数据透视图但是它不能在测试列中抓取所有具有相同值的那些

CREATE TABLE #testTbl(nbr int,name varchar(20),test VARCHAR(10))
INSERT INTO #testTbl
SELECT '33','Barry','Prim'
UNION
SELECT '33','Brian','Sup'
UNION
SELECT '33','Burke','1st'
UNION
SELECT '33','Ray','Add'
UNION
SELECT '33','jake','Add'
UNION
SELECT '33','Smith','Add'


select * from (
Select * 
from #testTbl
) as x
 pivot(
 max(name) for test in ([prim],[sup],[1st],[add])
)
as pivot1

非常感谢任何帮助。如果不能将列输出为Add Add2和Add3就好了。无论什么都有效。

1 个答案:

答案 0 :(得分:1)

您可以通过使用窗口函数修改test值来执行此操作:

select *
from (Select tt.name,
             (test + (case when count(*) over (partition by test) = 1
                           then ''
                           else cast(row_number() over (partition by test order by (select null)) as varchar(255))
                      end)) as test
      from testTbl tt
     ) as x
pivot(
 max(name) for test in ([prim], [sup], [1st], [Add1], [Add2], [Add3])
) as pivot1

SQL小提琴是here