Ms access 访问错误的结果

Ms access 访问错误的结果,ms-access,sum,int,Ms Access,Sum,Int,这是我的问题 第一步。 我对HH列求和(别名求和原始值),得到419。这个结果是正确的。(见下图) 第二步。 我只想取HH列的INT值,得到417。这个结果是正确的。(见下图) 第三步。 我想创建一列Global\u Int\u Sum\u HH(416),但此值不同于Int\u Sum\u HH(417) 为什么结果不同 这就是问题所在 SELECT Year, Month, Customer, User, Int(Sum(HH)) AS Int_Sum_HH, (

这是我的问题

第一步。 我对HH列求和(别名求和原始值),得到419。这个结果是正确的。(见下图)

第二步。 我只想取HH列的INT值,得到417。这个结果是正确的。(见下图)

第三步。 我想创建一列Global\u Int\u Sum\u HH(416),但此值不同于Int\u Sum\u HH(417)

为什么结果不同

这就是问题所在

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"));

在我看来,你的行动顺序不一致

在一个实例中,您是
int
sum
,在第二个实例中,您是
sum
int

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\u Int\u Sum\u HH
值将等于
419
,而
Int\u Sum\u HH
列将改为
417
。无关:我还建议您将“HAVING”子句替换为“WHERE”子句以提高性能。Int(Sum(HH))将为全球一级提供419,而不是417。