2015-06-04 42 views
1

嘗試對具有相同值的多行數據透視表結果 我的數據看起來像這樣到目前爲止。對同一列有多個值的SQL數據透視表

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

您可以通過修改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

+0

戈登 - 謝謝!當我在這個解決方案中縮小範圍時,你擊敗了我自己的答案,但是我只是想知道當我不知道到底會有多少Add時,如何做關鍵點。它可能是Add1 Add2 Add3 .... – Jt2ouan

+0

@ Jt2ouan。 。 。那麼你需要一個動態的支點。谷歌「動態數據透視」以及您的數據庫名稱。 –

+0

Yup也發現了。當我不經常調整時,我總會忘記樞軸技術。 – Jt2ouan