2014-03-19 36 views
4

雖然我能夠找到如何在這些論壇中轉發這些數據,但我一直無法找到將結果推送到臨時表的方法,以便我可以將其用於其他查詢。代碼如下。有沒有一種可能的方式讓這個輸出填充臨時表?動態樞軸結果到一個臨時表

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

我編輯了這個來顯示我的工作。感謝下面的建議,我標記爲答案。我確實必須改變上面所反映的「進入」位置,並且正在做我需要做的事情。非常感謝@Teis Lindemark! – BumpML

回答

3

您應該可以使用INTO Clause。我在你的例子中添加了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 
+1

@Ties Lindemark,謝謝。我根據你的建議調整了查詢​​,但是我得到了「關鍵字附近的語法不正確」到任何想法? – BumpML

+0

其實,你發佈的內容給了我一些想法來嘗試,而且一個工作。竅門。謝謝你讓我走上正軌。 – BumpML

+1

噢,INTO應該可能是第一個選擇。「SELECT EVAL_ID,AuditType,'+ @cols +'INTO from」我檢查了一個查詢沒有一個主要部分 –

0

我回答過類似的問題here,我知道這個問題統稱爲「臨時表」,讓全局臨時表的上面使用符合標準,但所有的事情都是平等的,本地臨時表是最好全局所以潛水員也應該看到這個問題和答案。