首页 >数据库 >mysql教程 >如何在 T-SQL 中透视多个列以转换财务比率数据?

如何在 T-SQL 中透视多个列以转换财务比率数据?

Mary-Kate Olsen
Mary-Kate Olsen原创
2025-01-05 01:54:47260浏览

How to Pivot Multiple Columns in T-SQL to Transform Financial Ratio Data?

在 TSQL 中透视多个列

使用关系数据库时,通常需要转换数据以使其更易于分析或报告。实现此目的的一种方法是旋转数据,这涉及将行旋转为列,反之亦然。

考虑下表,其中包含财务比率、结果、分数和成绩:

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

要旋转此数据并保留所有标签,我们需要对结果、分数和成绩列进行逆透视,以便每一行在每一列中都有一个值。这可以使用 UNPIVOT 函数或 CROSS APPLY 来实现,具体取决于您使用的 SQL Server 版本。

数据取消透视后,我们可以应用 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 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中文网其他相关文章!

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