ホームページ >データベース >mysql チュートリアル >ピボット関数を使用してSQLサーバーの列に行を変換する方法は?
SQL Server のピボット テーブルは、データを行から列に転置する強力な方法を提供します。ただし、ユーザーは正しいクエリを構築する際に課題に遭遇する可能性があります。
既知の列値に対して PIVOT 関数を使用します:
事前定義された列の値 (この場合は週番号) については、PIVOT 関数を直接使用できます。
<code class="language-sql">select * from ( select store, week, xCount from yt ) src pivot ( sum(xcount) for week in ([1], [2], [3]) ) piv;</code>
ピボット列の値を動的に生成します:
不明な列値 (動的週番号など) を処理するには、動的 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>
結果:
どちらの方法でも同じ結果が生成されます:
| 101 | 282 |
| 102 | 212 |
| 105 | 78 |
| 109 | 97 |
以上がピボット関数を使用してSQLサーバーの列に行を変換する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。