在 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 函数后设置两位小数的主要内容,如果未能解决你的问题,请参考以下文章

问下sqlserver求平均数avg函数怎样保留小数位啊?

苹果手机为啥看不出小数点后两位

EXCEL怎么让小数后两位显示0

EXCEL怎么让小数后两位显示0

如何在excel中保留小数点后两位

matlab中怎么设置保留小数点后两位?