2015-04-22 24 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