3

SQL (SQL Server 2008) でピボット テーブルを生成しようとしています。列リストを取得するために、SQL で使用するとうまく機能する stuff 関数を使用しています。

ピボット構造の動的な性質(ユーザーによる選択)により、列名を変数として設定したいのですが。正しい SQL Stuff 構文をキャッチできますが、実行できません。何か案が?

以下のコード例を参照してください: 作業コード:

    DECLARE @cols AS NVARCHAR(MAX),
    @query  AS NVARCHAR(MAX)

select @cols = STUFF((SELECT distinct ',' + QUOTENAME(Station) 
                    from #ResultCrosstab
            FOR XML PATH(''), TYPE
            ).value('.', 'NVARCHAR(MAX)') 
        ,1,1,'')
Select @cols 

以下のように動作しないコード

Declare @ColumnName varchar(100)
set @ColumnName='Station'
DECLARE @cols1 AS NVARCHAR(MAX)
DECLARE @queryCol AS NVARCHAR(MAX)

set @queryCol='STUFF((SELECT distinct '','' + QUOTENAME(' + @ColumnName + ') 
                    from #ResultCrosstab
            FOR XML PATH(''), TYPE
            ).value(''.'', ''NVARCHAR(MAX)'') 
        ,1,1,'''')'

Select @queryCol
Select @cols1=(@queryCol)

Not Working コードは、結果ではなく SQL クエリ自体を返します。

アイデアや提案はありますか?

乾杯ハーディープ

4

1 に答える 1