繁体   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