2016-07-25 8 views
0

誰かが2番目のブロックの 'シンボルの意味を説明できますか?私はピボットを扱うこの古いポストを見つけ、セット@queryはこれらのシンボルに置かれていますが、最初のシンボルは選択されていません(select @cols)。それはどういう意味ですか?それはなぜそれのようにする必要がありますか?'の意味' in SQL Pivot

Convert Rows to columns using 'Pivot' in SQL Server

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

select @cols = STUFF((SELECT ',' + QUOTENAME(Week) 
        from yt 
        group by Week 
        order by Week 
      FOR XML PATH(''), TYPE 
      ).value('.', 'NVARCHAR(MAX)') 
     ,1,1,'') 

set @query = 'SELECT store,' + @cols + ' from 
      (
       select store, week, xCount 
       from yt 
      ) x 
      pivot 
      (
       sum(xCount) 
       for week in (' + @cols + ') 
      ) p ' 

execute(@query); 
+0

"なぜそれはそのようにする必要がありますか?"ピボット内の動的な列数を処理する場合は、動的SQLを使用する必要があります。 @Colsは、単にピボットしたい列のリストです。 – xQbert

答えて

1

第2のブロックは、ダイナミッククエリ評価を使用しています。 'シンボルは単に文字列リテラル区切り文字です。

+0

これで簡単です。ありがとうございます – SQLStarter

+0

大歓迎です。 –