在 PIVOT 中的 AVG 函数后设置两位小数
Set two decimal places after AVG function inside PIVOT
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) 最终成为无法识别的聚合。
您希望所有数字保留两位小数,即使这些数字并不重要。这看起来像是一个纯粹的格式问题。
我会推荐 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 ...
请注意,这会将数字转换为字符串 - 这似乎是您在这里实际要问的内容。
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) 最终成为无法识别的聚合。
您希望所有数字保留两位小数,即使这些数字并不重要。这看起来像是一个纯粹的格式问题。
我会推荐 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 ...
请注意,这会将数字转换为字符串 - 这似乎是您在这里实际要问的内容。