2016-05-16 62 views
1

這是我的問題。Access 2010錯誤結果

第一步。 我總結列HH(別名SUM_Original_values),我得到419.這個結果是正確的。 (見下面的圖)

enter image description here

第二步驟。 我只想拿INT HH列的值,我得到417.這個結果是正確的。 (見下面的圖)

enter image description here

第三步驟。 我想創建一個列Global_Int_Sum_HH(416),但這個值是不同Int_Sum_HH(417)

enter image description here

爲什麼結果是型動物?

這是查詢

SELECT 
Year, 
Month, 
Customer, 
User, 
Int(Sum(HH)) AS Int_Sum_HH, 

(
SELECT (int(sum(int(HH)))) AS Global_Int_Sum_HH 
FROM T_Att 
HAVING (((Year)="2016") AND ((month)="03") AND ((Customer)="FC")); 
) AS Global_Int_Sum_HH, 

Customer + Str(Global_Int_Sum_HH) AS [KEY] 

FROM T_Att 

GROUP BY Year, Month, Customer, User 
HAVING (((Year)="2016") AND ((Month)="03") AND ((Customer)="FC")); 

回答

1

它看起來對我來說,有一個在你的操作順序不一致。

在一種情況下,您intsum,並在第二種情況sumint

SELECT 
Year, 
Month, 
Customer, 
User, 
Sum(Int(HH)) AS Int_Sum_HH, 
--^changed order of events to match sub-query 
(
-- v removed redundant int() 
SELECT sum(int(HH)) AS Global_Int_Sum_HH 
FROM T_Att 
HAVING (((Year)="2016") AND ((month)="03") AND ((Customer)="FC")); 
) AS Global_Int_Sum_HH, 

Customer + Str(Global_Int_Sum_HH) AS [KEY] 

FROM T_Att 

GROUP BY Year, Month, Customer, User 
HAVING (((Year)="2016") AND ((Month)="03") AND ((Customer)="FC")); 

上述調整將使兩個值的「正確」答案= 416。如果您要將您的操作順序更改爲Int(Sum(HH)),則Global_Int_Sum_HH值將等於419,而您的Int_Sum_HH列將改爲417

+1

無關:我還建議您將「HAVING」子句換成「WHERE」子句以提高性能。 – Sturgus

+0

Int(Sum(HH))將給全球419,而不是417. – OpiesDad

+0

@OpiesDad,你說得對,我會編輯我的答案。 – Sturgus