ホームページ >データベース >mysql チュートリアル >SQL Server の PIVOT 関数を使用して、静的週番号と動的週番号の両方を処理して行を列にピボットするにはどうすればよいですか?
SQL Server の PIVOT 関数: 行を列に変換し、静的および動的な週番号を処理します
背景:
店舗番号、週番号、対応する合計を含む複数の列を含む一時テーブルがあります。週番号は動的であるため、データを表形式にピボットすることが困難になります。
解決策:
SQL Server で PIVOT
関数を使用して行を列に変換するには、次の手順に従います。
1. 静的な週番号:
週番号がわかっている場合は、次のハードコードされたクエリを使用します:
<code class="language-sql">SELECT * FROM ( SELECT store, week, xCount FROM yt ) src PIVOT ( SUM(xcount) FOR week IN ([1], [2], [3]) ) piv;</code>
2. 動的な週番号:
週番号が動的である場合は、動的 SQL を使用します:
<code class="language-sql">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);</code>
結果:
両方のクエリは、左側に店舗番号、上部に週番号を含むピボット テーブルを返します。各セルには、対応する店舗と週番号の「xCount」の合計が含まれます。
<code>| STORE | 1 | 2 | 3 | --------------------------- | 101 | 138 | 282 | 220 | | 102 | 96 | 212 | 123 | | 105 | 37 | 78 | 60 | | 109 | 59 | 97 | 87 |</code>
以上がSQL Server の PIVOT 関数を使用して、静的週番号と動的週番号の両方を処理して行を列にピボットするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。