2013-02-21 26 views
0

数我有这样的查询:怎么不来一轮SQL

Select Customer,JobType,sum(SThours), 
sum(OThours),SortMonth, 
str((sum(OThours)/sum(SThours)),5,2)AS Ratios 
from #data 
group by Customer,JobType,SortMonth 


Sum (SThours): 688 
sum(OThours): 618 

的比例应该是688分之618= 0.90,但我的结果是1.00

我是新来的SQL,我需要帮助。谢谢。

+0

您正在使用的数据库? – beny23 2013-02-21 13:58:37

+0

非常感谢,我得到它 – 2013-02-21 14:26:32

回答

1

尽量铸造数量为十进制

SELECT 
    Customer, 
    JobType, 
    sum(SThours), 
    sum(OThours), 
    SortMonth, 
    str((CAST(sum(OThours) AS DECIMAL)/sum(SThours)),5,2) AS Ratios 
FROM 
    #data 
GROUP BY 
    Customer, JobType, SortMonth 

试试这个样本fiddle

它是简单的展示越来越十进制值

3

尝试将一个或另一侧划分为一个浮点 - 强制浮点而不是整数除法。

SELECT 
    Customer, 
    JobType, 
    sum(SThours), 
    sum(OThours), 
    SortMonth, 
    str((CAST(sum(OThours) AS FLOAT)/sum(SThours)),5,2) AS Ratios 
FROM 
    #data 
GROUP BY 
    Customer, 
    JobType, 
    SortMonth 
+0

我尝试的代码,但我仍然得到相同的结果。我在Crystla报告中使用了sql查询。 – 2013-02-21 14:09:21

+0

我明白了,当我宣布比率我设置数字现在我改变为数字(10,2)。感谢您的帮助。那为我节省了一天 – 2013-02-21 14:28:55

1

你的问题是你正在执行一个整数除法,它总是会返回一个整数值。 您应该将这些总和转换为浮点数字值(小数点应该有效),然后再将它们分开。