SQL Union Query - 两个访问表

问题描述 投票:0回答:2

我在MS Access,qryLabourqryMaterials中有两个相同的查询。我需要得到三个领域的总数:Labour MinsLaser Mins$ Cost

我知道这可以使用联合查询来完成,但是我用了一段时间已经很长时间了,我一直得到“FROM语句中的错误”。

我的SQL是:

SELECT sum(TotalLabour) as TotalLabour,sum(TotalCost) as TotalCost,sum(TotalLaser) as TotalLaser
FROM

(
SELECT Sum([qryLabour].[Labour Mins]) AS TotalLabour, Sum([qryLabour].[$ Cost]) AS TotalCost, Sum([qryLabour].[Laser Mins]) AS TotalLaser
FROM qryLabour;

union all

SELECT Sum([qryMaterial].[Labour Mins]) AS TotalLabour, Sum([qryMaterial].[$ Cost]) AS TotalCost, Sum([qryMaterial].[Laser Mins]) AS TotalLaser
FROM qryMaterial;

)

有人可以告诉我哪里出错了吗?如果我删除顶级“选择”语句,我会得到两行,其中包含总数,当我添加顶级语句来合并两者时。

sql ms-access union union-all
2个回答
2
投票

请注意,但我认为你需要一个别名:

SELECT sum(u.TotalLabour) as TotalLabour,sum(u.TotalCost) as TotalCost,sum(u.TotalLaser) as TotalLaser
FROM

(
SELECT Sum([qryLabour].[Labour Mins]) AS TotalLabour, Sum([qryLabour].[$ Cost]) AS TotalCost, Sum([qryLabour].[Laser Mins]) AS TotalLaser
FROM qryLabour

union all

SELECT Sum([qryMaterial].[Labour Mins]) AS TotalLabour, Sum([qryMaterial].[$ Cost]) AS TotalCost, Sum([qryMaterial].[Laser Mins]) AS TotalLaser
FROM qryMaterial

) as u

编辑:也删除“;”正如@jarlh建议的那样,在子查询中


0
投票

谢谢Jaydip。

我实际上只是想通了,我在内部;语句的末尾有SELECT,我删除了它,并使父母SELECT中的名字独一无二。现在工作得很好。

所以正确的代码是:

SELECT sum( tempTotalLabour) as TotalLabour,sum( tempTotalCost) as TotalCost,sum( tempTotalLaser) as TotalLaser
FROM

(
SELECT Sum([qryLabour].[Labour Mins]) AS tempTotalLabour, Sum([qryLabour].[$ Cost]) AS  tempTotalCost, Sum([qryLabour].[Laser Mins]) AS tempTotalLaser
FROM qryLabour

union all

SELECT Sum([qryMaterial].[Labour Mins]) AS  tempTotalLabour, Sum([qryMaterial].[$ Cost]) AS  tempTotalCost, Sum([qryMaterial].[Laser Mins]) AS  tempTotalLaser
FROM qryMaterial

) ;

干杯克里斯

© www.soinside.com 2019 - 2024. All rights reserved.