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