Sql 小数点问题再次出现

Sql 小数点问题再次出现,sql,Sql,第一行代码显示为2个小数点 第二行显示3个小数点 SUM(CONVERT(DECIMAL(8,2),[can]/1.2)) + SUM(CONVERT(DECIMAL(8,2),[carton]/1.2)) AS [N], (SUM(CONVERT(DECIMAL(8,2),[can]/1.2)) + SUM(CONVERT(DECIMAL(8,2),[carton]/1.2)))*0.2 AS [V] 有人能告诉我如何让第二行显示2个小数点吗?只需将结果转换为小数点后2位: SUM(CONV

第一行代码显示为2个小数点 第二行显示3个小数点

SUM(CONVERT(DECIMAL(8,2),[can]/1.2)) + SUM(CONVERT(DECIMAL(8,2),[carton]/1.2)) AS [N],
(SUM(CONVERT(DECIMAL(8,2),[can]/1.2)) + SUM(CONVERT(DECIMAL(8,2),[carton]/1.2)))*0.2 AS [V]

有人能告诉我如何让第二行显示2个小数点吗?只需将结果转换为小数点后2位:

SUM(CONVERT(DECIMAL(8,2),[can]/1.2)) + SUM(CONVERT(DECIMAL(8,2),[carton]/1.2)) AS [N],
(SUM(CONVERT(DECIMAL(8,2),[can]/1.2)) + SUM(CONVERT(DECIMAL(8,2),[carton]/1.2)))*0.2 AS [V]
select --just added to make the example runnable

SUM(CONVERT(DECIMAL(8,2),[can]/1.2)) + SUM(CONVERT(DECIMAL(8,2),[carton]/1.2)) AS [N],

CONVERT(DECIMAL(8,2), --add this line

    (SUM(CONVERT(DECIMAL(8,2),[can]/1.2)) + SUM(CONVERT(DECIMAL(8,2),[carton]/1.2)))*0.2

) --and an additional close bracket 
AS [V]

from (select 1.0 [can], 1.0 [carton] union all select 2.0, 3.0) x --just added to make the example runnable

你看到小数点后3位的原因是因为这就是计算的结果;当使用小数时,SQL将输出一个具有适当精度和比例的小数来保存该结果,除非您将其转换为特定的值。

使用
convert
将其转换为2个小数

SELECT
  SUM(CONVERT(decimal(8, 2), [can] / 1.2)) + SUM(CONVERT(decimal(8, 2), [carton] / 1.2)) AS [N],
  CONVERT(decimal(8, 2), ((SUM(CONVERT(decimal(8, 2), [can] / 1.2)) + SUM(CONVERT(decimal(8, 2), [carton] / 1.2))) * 0.2)) AS [V]

如果要控制显示,请在计算后执行十进制转换:

CONVERT(DECIMAL(8, 2), SUM([can]/1.2)) + SUM([carton]/1.2)) AS [N],

如果需要将某个中间值表示为十进制,则可以在之前进行转换。不过,请注意,在进行十进制运算时,SQL Server对中间结果和最终结果的精度和规模有着非常神秘的规则。

C#在这一点上到底适合什么?您应该用您正在使用的数据库标记您的问题,这大概是SQL Server的某个版本。谢谢John。如果这个或任何答案已经解决了你的问题,请记住点击复选标记。这向更广泛的社区表明,你已经找到了一个解决方案,并给回答者和你自己带来了一些声誉。没有义务这样做。