我有这样的查询:
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
该比率应为618/688 = 0.90但我的结果为1.00
我是SQL的新手,我需要帮助。感谢。
答案 0 :(得分: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
答案 1 :(得分:1)
您的问题是您正在执行整数除法,它总是会返回一个整数值。 在分割之前,您应该将总和转换为浮点数值(小数应该起作用)。
答案 2 :(得分: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
这是显示获取小数值的简单示例