具有对同一列多个值SQL透视列(SQL Pivot Column that has multiple

2019-10-23 06:20发布

试图转动可能具有相同的值我有数据,看起来像这样到目前为止,多行表结果。

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

任何帮助是极大的赞赏。 如果它不可能有列输出添加ADD2和ADD3多数民众赞成罚款。 无论工作。

Answer 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小提琴是在这里 。



文章来源: SQL Pivot Column that has multiple values for same column
标签: sql pivot