ホームページ >データベース >mysql チュートリアル >T-SQL テーブルの複数の列をピボットする方法
複数列の T-SQL テーブルのピボット
T-SQL では、データのピボットはテーブル構造を変換して表示するための便利な手法です。データが異なります。ピボット処理に複数の列の処理が含まれる場合、データのピボット解除が有益であることが判明する可能性があります。
次のテーブルについて考えてみましょう:
RATIO | RESULT | SCORE | GRADE |
---|---|---|---|
Current Ratio | 1.294 | 60 | Good |
Gearing Ratio | 0.3384 | 70 | Good |
Performance Ratio | 0.0427 | 50 | Satisfactory |
TOTAL | NULL | 180 | Good |
目標は、このテーブルをピボットして次の望ましい結果を取得することです:
RATIO | Current Ratio | Gearing Ratio | Performance Ratio | TOTAL |
---|---|---|---|---|
Result | 1.294 | 0.3384 | 0.0427 | NULL |
Score | 60 | 70 | 50 | 180 |
Grade | Good | Good | Satisfactory | Good |
これを達成するには、次の手順に従います。手順:
結果、スコア、成績列のピボット解除:
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;
これにより、望ましい結果が得られます。ピボットされた複数の列を含むテーブルを提供します。
以上がT-SQL テーブルの複数の列をピボットする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。