以下工作:使用動態SQL創建表
DECLARE @cols AS NVARCHAR(MAX),
@query AS NVARCHAR(MAX);
SET @cols =
STUFF
(
(
SELECT ',' + QUOTENAME(b."NewName")
FROM (
SELECT myKey,
win = SUM(win)
FROM xxx.dbo.yyy
GROUP BY myKey
) x
INNER JOIN #NameSwitch b ON
x.myKey = b.myKey
ORDER BY x.win DESC
FOR XML PATH(''), TYPE
).value('.', 'NVARCHAR(MAX)')
,1,1,'');
SET @query =
'SELECT [Measure],' + @cols + '
FROM
(
SELECT [NewName], [Measure], [Amount]
FROM #UnpivottedData x
) x
PIVOT
(
SUM(Amount)
FOR [NewName] in (' + @cols + ')
) p ';
EXECUTE(@query);
但問題是我想輸入結果到一個臨時表#xxx
再後來就能夠通過SELECT * FROM #xxx
使用此數據。
我是否需要CREATE
#xxx使用dynamic sql
才能運行上述操作?如果有的話,任何人都可以指示我完成這個示例的方向。
+1 @Daniel感謝您的幫助和額外提示;我認爲你可能更多的是我正在尋找的東西(儘管在其他答案中使用'##'表格非常漂亮)。你是說我可以放下'東西',它仍然會運行?你有沒有時間簡化我的'SET @cols = ...'腳本並將簡化版本放入你的答案中? – whytheq 2013-02-19 15:38:10
@whytheq查看更新的答案 – Daniel 2013-02-19 18:41:17
感謝所有的幫助/建議 - 這一切似乎工作正常 - 我想我需要閱讀關於這個「FOR XML PATH」,因爲它看起來很強大 – whytheq 2013-02-20 09:31:10