SQL舍入问题

时间:2016-03-14 15:35:21

标签: sql sql-server subquery rounding

我有这个字段我试图运行,但它不断将答案舍入为0。

(Select round(Count( TestDN.dbo.ServiceDoc.[Sender]) from TestDN.dbo.ServiceDoc  where [Sender] = 'agent'),2) 
/
(Select round(Count( TestDN.dbo.ServiceDoc.[Sender]) from TestDN.dbo.ServiceDoc  where [Sender] = 'user'),2) as 'ServiceCount'

现在这个等式应该基本上是3277/3369,因此产生一个小数,但我一直得到0.我甚至尝试去掉圆函数并将整个方程乘以1.00,但它给出了0.00

1 个答案:

答案 0 :(得分:0)

计数是数字,即使你是圆的。在除法后进行舍入然后舍入 - 或者更好,转换为小数。

您也可以删除这两个查询,并将其替换为:

(Select sum(case when [Sender] = 'agent' then 1.0 else 0.0 end) /
        sum(case when [Sender] = 'user' then 1.0 else 0.0 end)
 from TestDN.dbo.ServiceDoc
) 

对于round()

round( (Select sum(case when [Sender] = 'agent' then 1.0 else 0.0 end) /
               sum(case when [Sender] = 'user' then 1.0 else 0.0 end)
        from TestDN.dbo.ServiceDoc
       ), 2
     ) as ServiceCount

此外,仅对字符串和列文字(常量)使用单引号。不要将它们用于列名。这会导致混淆和可能难以调试的错误。