簡體   English   中英

如何將動態樞軸變量輸出另存為 SQL Server 表

[英]How To Save Dynamic Pivot Variable Output As SQL Server Table

我已經成功構建了我一直在尋找的輸出,使用動態 SQL 創建一個帶有動態創建的列名的數據透視表。

我的代碼是:

IF OBJECT_ID('tempdb..#TempDB') IS NOT NULL
DROP TABLE #TempDB
SELECT CASEID, FORMNAME, NAME, VALUE INTO #TempDB FROM dbo.EFORM WHERE FORMNAME='IncidentReporting'

 IF OBJECT_ID('tempdb..#TempDB1') IS NOT NULL
DROP TABLE #TempDB1
SELECT DISTINCT Name INTO #TempDB1 FROM #TempDB

DECLARE @columns varchar(max)
DECLARE @query varchar(max)

SELECT @columns = COALESCE(@columns + ',[' + cast([Name] as varchar(100)) + ']', 
             '[' + cast([Name] as varchar(100))+ ']') 
             FROM #TempDB1

SET @query = 'SELECT * FROM #TempDB AS PivotData '
SET @query = @query  + 
'PIVOT (MAX(VALUE) FOR [NAME] IN (' + @columns + ')) AS p'

EXEC (@query)

這成功地給了我這樣的結果:

CASEID  FORMNAME             Column1    Column2 Column3
501000000621    IncidentReporting   Value1  Valuea  Valuev
501000000622    IncidentReporting   Value2  Valueb  Valuew
601000000126    IncidentReporting   Value3  Valuec  Valuex
601000000127    IncidentReporting   Value4  Valued  Valuey
601000000128    IncidentReporting   Value5  Valuee  Valuez

從@query 變量輸出的這些結果正是我想要這些結果的表格的格式。

誰能告訴我如何將 @query 變量中的結果放入標准 SQL 表中?

我試過做這樣的語句,但我收到消息“' + @columns + ' 附近的語法不正確”:

SELECT *
INTO #TempDB4
FROM (SELECT * FROM #TempDB AS PivotData 
PIVOT (MAX(VALUE) FOR [NAME] IN (' + @columns + ')) AS p)

提前謝謝了。

在現有的代碼,添加into該行:

SET @query = 'SELECT * FROM #TempDB AS PivotData '

以便您獲得:

SET @query = 'SELECT * INTO #TempDB4 FROM #TempDB AS PivotData '

或者以同樣的方式添加insert

為了讓不成功的查詢按預期工作,您必須將其轉換為動態 SQL,就像您的成功查詢一樣,並使用execsp_executesql調用它

暫無
暫無

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

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