2016-05-16 3 views
1

これは私の問題です。アクセス2010の合計が間違った結果

最初のステップ。 列HH(別名SUM_Original_values)を合計すると419が得られます。この結果は正しいです。

enter image description here

第2工程を(以下PICを参照)。 私はただ受け取りたいINT HH列の値は417です。この結果は正しいです。

enter image description here

第三ステップ(以下PICを参照)。 は私がコラム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

です。

あなたはのint、もう1つのインスタンスでは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

関連性:パフォーマンスを向上させるために、「WHERE」節に「HAVING」節を入れ替えることをお勧めします。 – Sturgus

+0

Int(Sum(HH))は、417ではなく、グローバルなものに対して419を与えます。 – OpiesDad

+0

@OpiesDad、そうです、私は答えを編集します。 – Sturgus