在 PIVOT 内的 AVG 函数后设置两位小数
Posted
技术标签:
【中文标题】在 PIVOT 内的 AVG 函数后设置两位小数【英文标题】:Set two decimal places after AVG function inside PIVOT 【发布时间】:2020-11-09 07:36:10 【问题描述】:SELECT
Student, [English], [Mathematics], [Science], [Programming], [History]
FROM
(
SELECT
Grades, Subject, Student
FROM
Grade_Report
) AS sourcetable
PIVOT
(
AVG(Grades)
FOR [Subject] IN ([English], [Mathematics], [Science], [Programming], [History])
) AS pivoted
输出一直是 95.000000
我尝试在枢轴内使用 AVG( CAST(Grades AS Decimal(10,2) ) ),但它不断返回有关 (.
的语法错误尝试在 FROM 子查询中使用 CAST AS DECIMAL,但它只是保持相同的 00000 输出。 CAST AS FLOAT 有效,但我需要两位小数,它消除了尾随的 0
在枢轴内使用 ROUND(AVG) 最终会成为无法识别的聚合。
【问题讨论】:
【参考方案1】:您希望所有数字都有两位小数,即使这些数字不重要。这看起来像是一个纯粹的格式问题。
我会推荐format()
:
SELECT Student,
format([English], '0.00') as [English],
format([Mathematics], '0.00') as [Mathematics],
format([Science], '0.00') as [Science],
format([Programming], '0.00') as [Programming],
format([History], '0.00') as [History]
FROM ...
请注意,这会将数字转换为字符串 - 这似乎是您在此处实际询问的内容。
【讨论】:
谢谢,成功了!我从来不知道有可能触及那些旋转的价值观。现在我尝试在它们上使用 CAST,它也有效,你有什么建议?以上是关于在 PIVOT 内的 AVG 函数后设置两位小数的主要内容,如果未能解决你的问题,请参考以下文章