透視多列的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逆透視data:
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中文網其他相關文章!