如何在 TSQL 中透视多个列
在 TSQL 中,透视表涉及将行重新排列为列。但是,在处理多列时,保留所有标签至关重要。
逆透视数据
首先,由于我们有多个数据列,建议对它们进行逆透视成一列。这可以使用 UNPIVOT 函数或 CROSS APPLY 方法来实现,具体取决于 SQL Server 版本。取消透视的语法为:
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;
结果
这将产生所需的输出:
| 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中文网其他相关文章!