You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL Server中如何去除内置函数返回值的多余小数位仅保留2位小数

问题说明

当前SQL Server查询返回的最大平均价格带有多余尾部0,显示为22.590000,需要调整语句让结果仅保留两位小数,输出22.59。

问题原因

子查询中虽然已经通过round(avg(prod_price),2)将各品牌平均价格保留了两位小数,但SQL Server的聚合函数返回值会继承计算字段的原始数值精度,外层调用max()取最大值时会沿用原类型的小数位长度,因此最终结果会显示末尾多余的0。

调整方案

只需要对外层最终输出的聚合结果做固定精度转换即可,优先推荐使用CAST显式指定数值精度为两位小数,能彻底避免尾0显示问题。其中DECIMAL(10,2)代表总长度10位、小数位占2位,可根据实际价格的数值范围调整总长度参数。

调整后可直接运行的语句

SELECT CAST(MAX(AveragePrice) AS DECIMAL(10,2)) AS [LARGEST AVERAGE]
FROM
    (SELECT b.brand_id, ROUND(AVG(prod_price),2) AS AveragePrice
    FROM lgbrand b
    INNER JOIN lgproduct p ON b.brand_id = p.brand_id
    GROUP BY b.brand_id) x

补充:这里将原来的逗号隐式连接改成了显式INNER JOIN写法,逻辑和原语句完全一致,可读性更高,也能避免后续多表连接时漏写关联条件的问题。

可选写法

如果习惯用ROUND函数,也可以在外层嵌套ROUND,但注意如果不做类型转换,部分查询客户端可能依然会按照原始字段精度显示尾0:

SELECT ROUND(MAX(AveragePrice),2) AS [LARGEST AVERAGE]
FROM
    (SELECT b.brand_id, ROUND(AVG(prod_price),2) AS AveragePrice
    FROM lgbrand b, lgproduct p
    WHERE b.brand_id = p.brand_id
    GROUP BY b.brand_id) x

执行修改后的语句,最终输出结果会固定为两位小数的22.59。

内容的提问来源于stack exchange,提问作者BadAtSQL

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.31 10:30:53