簡體   English   中英

來自單獨列的動態 sql 數據透視值

[英]Dynamic sql pivot values coming in seperate columns

嗨,我正在嘗試編寫動態數據透視表,因為我有 100 多列

ID   Question    Answer
1    Name        peter
1    DOB         11/12/2003
1    address     …..
1    Issue1      d
1    Issue2      a
2    Name        sam
2    DOB         10/01/1998
2    address     …..
2    Issue1      p
2    Issue2      f

我想要這樣的輸出:

ID    Name    DOB         address    Issue1  Issue2
1     peter   11/12/2003    ….       d        a
2     sam     10/01/1998    ….       p        f

這是我使用的代碼:-

select @cols = STUFF((SELECT distinct ',' + QUOTENAME(Question) 
                from #temp
                FOR XML PATH(''), TYPE
        ).value('.', 'NVARCHAR(MAX)') 
    ,1,1,'')

set @query = N'SELECT ID + @cols + N' 
            from #temp
        pivot 
        (
            max([answer])
            for Question in (' + @cols + N')
        ) p '

exec sp_executesql @query;

但是我在單獨的一行中得到每個答案。 我希望一個 ID 的所有答案都排成一行。 有人可以幫助我。 珍惜你在這方面的時間。 謝謝你。

我得到這樣的輸出,這不是我想要的。 我想要上面的輸出。

ID    Name    DOB       address Issue1    Issue2
1     Peter             
1            11/12/2003         
1                       …       
1                               d   
1                                        a

看起來您正在尋找一種無需聚合即可根據您的表動態創建數據透視表的方法。 您可以嘗試以下操作:

SELECT @cols = STUFF((SELECT ',' + QUOTENAME(Question) 
                    FROM #TEMP
                    GROUP BY QUESTION
                    ORDER BY QUESTION
            FOR XML PATH(''), TYPE
            ).value('.', 'NVARCHAR(MAX)') 
        ,1,1,'')

set @query = 'SELECT ID,' + @cols + ' FROM 
             (
                SELECT ID, Question, Answer
                FROM #TEMP
            ) x
            pivot 
            (
                MAX(Answer)
                for Question in (' + @cols + ')
            ) p '

execute(@query);

預期輸出:

+----+---------+------------+--------+--------+-------+
| ID | address |    DOB     | Issue1 | Issue2 | Name  |
+----+---------+------------+--------+--------+-------+
|  1 | …..     | 11/12/2003 | d      | a      | peter |
|  2 | …..     | 10/1/1998  | p      | f      | sam   |
+----+---------+------------+--------+--------+-------+

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM