我需要帮助进行一次小数的除法计算。我试图总结并划分结果。我的Y和X是整数。
execute_async()
这是我得到的结果:
SELECT a.YearMonth,
(CONVERT(DECIMAL(9,1),Y_Service)+(CONVERT(DECIMAL(9,1),x_Service)/2)) AS Average_Of_Period
FROM table_IB a
INNER JOIN table_UB b ON a.YearMonth=b.YearMonth
正确答案是:YearMonth| Average_Of_Period
2015-03 276318.500000
我的Y和X值从4位到6位不等
答案 0 :(得分:3)
看起来您的操作是(y)+(x / 2)?
应该是(y + x)/ 2?
答案 1 :(得分:0)
可读性至关重要。如果你在计算之前必须做一些丑陋的演员表,你总是可以使用公共表格表达式或outer apply:
select
a.YearMonth,
(calc.Y_Service + calc.x_Service) / 2 as Average_Of_Period
from table_IB as a
inner join table_UB as b on a.YearMonth = b.YearMonth
outer apply (select
CONVERT(DECIMAL(9,1), Y_Service) as Y_Service,
CONVERT(DECIMAL(9,1), x_Service) as x_Service
) as calc
然后你不要错过你正在做Y_Service + x_Service / 2
而不是(Y_Service + x_Service) / 2
答案 2 :(得分:0)
改用它;它更容易:
select (x + y)/2.0
将小数点添加到2会将结果从整数除法更改为标准除法。由于同样的原因,这也有效:
select (x + y)*1.0/2
如果你想显式转换小数,最容易先添加 - 正如其他评论者提到的那样,这样可以更容易发现数学错误:
select cast(x + y as decimal(10,2))/2