首页 >数据库 >mysql教程 >如何透视 T-SQL 表中的多个列?

如何透视 T-SQL 表中的多个列?

Linda Hamilton
Linda Hamilton原创
2025-01-04 21:45:41956浏览

How to Pivot Multiple Columns in a T-SQL Table?

透视多列的 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

为了实现这一目标,我们可以遵循这些步骤:

  1. 逆透视结果、分数和成绩列:

    使用 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)
  2. 转置未转置的数据:

    将 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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn