2015-04-22 52 views
1

我需要使用小数点后一次进行除法运算的帮助。我正在总结和划分结果。我的Y和X是整数。加法和除法

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 

正确的答案是:185532,5

我的Y和X值从4位不同,以6个位数

+0

首先进行计算,然后转换/转换结果。 – jarlh

+1

是你的/ 2在正确的地方?它看起来需要移出一个或两个支架。 y +(x/2)应该是(y + x)/ 2 – Gibson

+0

正确答案是185532,5的X和Y的值是多少? – Biscuits

回答

3

看起来你操作是(y)+(x/2)?

应该是(y + x)/ 2吗?

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

0

改为使用它;这很容易:

select (x + y)/2.0 

将小数点添加到2会将整数除法结果更改为标准除法。这也将工作,出于同样的原因:

select (x + y)*1.0/2 

如果你想明确地转换小数,最容易先加 - 其他评论者提到这将使它更容易被发现的数学错误:

select cast(x + y as decimal(10,2))/2