透视多列的 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中文网其他相关文章!