ホームページ >データベース >mysql チュートリアル >T-SQL の複数の列をピボットして財務比率データを変換する方法
TSQL での複数の列のピボット
リレーショナル データベースを使用する場合、多くの場合、分析や分析を容易にするためにデータを変換する必要があります。について報告します。これを行う 1 つの方法は、データをピボットすることです。これには、行を列に、またはその逆に回転することが含まれます。
財務比率、結果、スコア、成績を含む次の表を考えてみましょう:
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 |
このデータをピボットしてすべてのラベルを保持するには、結果、スコア、評定の列のピボットを解除して、各行に各列に 1 つの値が含まれるようにする必要があります。これは、使用している SQL Server のバージョンに応じて、UNPIVOT 関数または CROSS APPLY を使用して実現できます。
データのピボットが解除されたら、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;
結果の出力は、比率ごとに 1 つの行と、現在の比率、ギアリング比率、パフォーマンス比率、合計、スコア、およびスコアの列を含むテーブルになります。グレード:
RATIO | CURRENT RATIO | GEARING RATIO | PERFORMANCE RATIO | TOTAL | SCORE | GRADE |
---|---|---|---|---|---|---|
grade | Good | Good | Satisfactory | Good | NULL | NULL |
result | 1.29400 | 0.33840 | 0.04270 | NULL | NULL | NULL |
score | 60.00000 | 70.00000 | 50.00000 | 180.00000 | NULL | NULL |
以上がT-SQL の複数の列をピボットして財務比率データを変換する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。