TSQL で複数の列をピボットする方法
TSQL でテーブルをピボットするには、行を列に再配置する必要があります。ただし、複数の列を扱う場合は、すべてのラベルを保持することが重要です。
データのピボット解除
まず、複数のデータ列があるため、それらのピボットを解除することをお勧めします。単一の列にまとめます。これは、SQL Server のバージョンに応じて、UNPIVOT 関数または CROSS APPLY メソッドを使用して実現できます。アンピボットの構文は次のとおりです。
select ratio, col, value from GRAND_TOTALS cross apply ( select 'result', cast(result as varchar(10)) union all select 'score', cast(score as varchar(10)) union all select 'grade', grade ) c(col, value)
ピボットの実行
データのピボットが解除されたら、PIVOT 関数を適用して必要に応じて列を再配置できます。構文は次のようになります:
select ratio = col, [current ratio], [gearing ratio], [performance ratio], total from ( select ratio, col, value from GRAND_TOTALS cross apply ( select 'result', cast(result as varchar(10)) union all select 'score', cast(score as varchar(10)) union all select 'grade', grade ) c(col, value) ) d pivot ( max(value) for ratio in ([current ratio], [gearing ratio], [performance ratio], total) ) piv;
Result
これにより、目的の出力が生成されます:
| RATIO | CURRENT RATIO | GEARING RATIO | PERFORMANCE RATIO | TOTAL | |--------|---------------|---------------|-------------------|-----------| | grade | Good | Good | Satisfactory | Good | | result | 1.29400 | 0.33840 | 0.04270 | (null) | | score | 60.00000 | 70.00000 | 50.00000 | 180.00000 |
以上がT-SQL で複数の列を効率的にピボットする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。