0

我目前在使用 SQL 时遇到了可怕的问题,我正在尝试计算某些值,类似于前任。以下:

SELECT Sum(OrdersAchieved)/ Sum(SaleOpportunities) as CalculatedValue
FROM (
        SELECT Count(OT.SalesOpportunity) AS SaleOpportunities
               Count(VK.Orders) AS OrdersAchieved
        FROM fact_VertriebKalkulation VK
     ) AS A

可悲的是,计算中发生的每个数字都只显示为最后一个四舍五入的数字!说:3/4 给我 0,而 4/4 = 1、8/4 = 2,依此类推。在试图找出问题可能是什么时,我发现即使以下内容似乎也在做同样的事情!

select 2/7 as Value

给出= 0!!!所以我尝试了这个

select convert(float,2/7) as  Value

这是同一件事!我该怎么办,有人见过这样的吗?或者有人知道我的问题的答案吗?非常感谢您提前提供的帮助

4

4 回答 4

2
select 2/7 as Value

...使用两个整数表示整数除法,正确为 0。

select 2.0/7 as Value

...使用至少一种浮点类型会给出 0.285714 这似乎是您正在寻找的。

换句话说,将其中一个操作数转换为浮点数,除法就会得到你想要的结果;

select convert(float,2)/7 as  Value

如果在除法已经完成整数除法之后进行转换,则只会转换结果 0。

于 2013-08-13T10:36:47.130 回答
1

尝试在除法之前转换两个值

select convert(float,2)/convert(float,7) as  Value

或其中之一

select convert(float,2)/7 as  Value

select 2/convert(float,7) as  Value
于 2013-08-13T10:36:33.987 回答
1

你可以试试这个

select convert(float,2)/7 as  Value

或这个

select 2/convert(float,7) as  Value
于 2013-08-13T10:40:35.497 回答
1

抱歉,我不能给你看 SQLFiddel Demo

这是我尝试您的问题的链接。您可以将以下查询粘贴到任何问题的文本区域中并在线获取解决方案或将其粘贴到您的 SQL 编辑器窗口中。

以下是您可以尝试的示例查询:

SELECT convert(float,convert(float,2)/convert(float,7,4),1) as ans
于 2013-08-13T10:47:03.687 回答