0

こんにちは

動的 SQL から作成したテーブルは、ピボット テーブルであるため、任意の数の列を持つことができます。

-- Pivot the table so we get the UW as columns rather than rows
DECLARE @SQL NVARCHAR(MAX)
SET @SQL = '
SELECT *
FROM #PreProcessed
PIVOT (SUM(Quotes)
        FOR [UW] IN (' + @UWColumns + ')
        ) AS bob'

このコードを実行して、動的 SQL を実行します。

EXEC sp_executesql @SQL,
                  N'@UWColumns nvarchar(MAX)',
                  @UWColumns

私の質問は、結果のテーブルをどのように保存するのですか? 特に、列の数や列の名前がわからない場合はどうすればよいですか?

以下のコードを試しましたが、うまくいきません

   INSERT INTO #Temp
   EXEC sp_executesql @SQL,
                  N'@UWColumns nvarchar(MAX)',
                  @UWColumns

みんな、ありがとう

4

2 に答える 2

0

この問題を回避する唯一の方法は、すべての計算を動的 SQL で行うことでした。つまり、2 つのテーブルで作業する必要がありました。

-- Pivot the table so we get the UW as columns rather than rows
DECLARE @SQL NVARCHAR(MAX)
SET @SQL = '
SELECT * INTO #temp
FROM #PreProcessed
PIVOT (SUM(Quotes)
        FOR [UW] IN (' + @UWColumns + ')
        ) AS bob

SELECT DISTINCT t1.Date, d.Declines AS ''Declines'' , '+@UWColumns+'
FROM #temp AS t1 LEFT OUTER JOIN
#Declines AS d ON t1.DATE = d.DATE
'

PRINT @SQL

EXEC(@SQL)
于 2013-12-09T16:40:47.437 に答える