SQL

动态数据透视表结果到临时表

发布于 2021-03-26 16:25:48

虽然我能够在这些论坛中找到如何旋转这些数据的方法,但是我还没有找到将结果推送到临时表的方法,以便可以将其用于其他查询。代码如下。是否有可能使此输出填充临时表?

SET @cols = STUFF((SELECT distinct ',' + QUOTENAME(QT.QUESTION_DESC)
                 FROM #QUES_TEMP QT
                 GROUP BY QT.QUESTION_DESC
                 FOR XML PATH(''), TYPE
                 ).value('.', 'NVARCHAR(MAX)')
                 ,1,1,'')

set @query = 'SELECT EVAL_ID, AuditType, ' + @cols + ' 
            into ##tmp
            from
        (
            select     QT.EVAL_ID,
                       QT.AuditType,
                       QT.SCORE,
                       QT.QUESTION_DESC

            from #QUES_TEMP QT
         ) x

        pivot
        (
             max(SCORE)
             for QUESTION_DESC in (' + @cols + ')
        ) p '

execute(@query);

select * from ##tmp
关注者
0
被浏览
85
1 个回答
  • 面试哥
    面试哥 2021-03-26
    为面试而生,有面试问题,就找面试哥。

    您应该可以使用INTO子句。我在您的示例中添加了INTO。

    SET @cols = STUFF((SELECT distinct ',' + QUOTENAME(QT.QUESTION_DESC)
                     FROM #QUES_TEMP QT
                     GROUP BY QT.QUESTION_DESC
                     FOR XML PATH(''), TYPE
                     ).value('.', 'NVARCHAR(MAX)')
                     ,1,1,'')
    
    set @query = 'SELECT EVAL_ID, AuditType, ' + @cols + ' from
            (
                select     QT.EVAL_ID,
                           QT.AuditType,
                           QT.SCORE,
                           QT.QUESTION_DESC
                into ##tmp
                from #QUES_TEMP QT
             ) x
    
            pivot
            (
                 max(SCORE)
                 for QUESTION_DESC in (' + @cols + ')
            ) p '
    
    execute(@query);
    
    SELECT * FROM ##tmp
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看