我的查询有问题,舍入只适用于第一行,你知道为什么吗?
SELECT DISTINCT a.articulo AS articulo
,b.NombreArticulo AS nom_art
,sum(a.uni_vta_caja) AS Unidades
,round(sum(a.imp_vta_caja_neto), 2) AS Venta
,substring(cast(a.fec_vta AS VARCHAR), 4, 2) AS mes
FROM ConsultaDWH.dbo.F_Venta_21606 a
INNER JOIN consultadwh.dbo.articulos b ON a.articulo = b.articulo
WHERE a.Articulo IN (
'1031260'
,'1031209'
)
GROUP BY a.articulo
,b.NombreArticulo
,substring(cast(a.fec_vta AS VARCHAR), 4, 2)
结果显示:
articulo nom_art Unidades Venta mes
1031209 Enutre Supl Alim Botellin 237ml Vainilla 686.0 14137.73 06
1031260 Enutre Supl Alim Botellin 237ml Fresa 597.0 12329.799999999999 06
查看.73和.9999999等。
答案 0 :(得分:0)
如果您想要2位小数,则需要使用CAST
代替ROUND
:
CAST(SUM(a.imp_vta_caja_neto) AS DECIMAL (8,2))
ROUND
可能会产生误导,因为我们大多数人自然认为ROUND(123.123,1)
应该输出一个小数位,123.1
它实际上做的是舍入到第一个小数位的精度,{{ 1}}。如果要在输出中使用明确的小数位数,则使用123.100
作为十进制来实现此目的。 CAST
= CAST(123.123 as decimal (8,1))