我在MS Access,qryLabour
和qryMaterials
中有两个相同的查询。我需要得到三个领域的总数:Labour Mins
,Laser 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;
)
有人可以告诉我哪里出错了吗?如果我删除顶级“选择”语句,我会得到两行,其中包含总数,当我添加顶级语句来合并两者时。
请注意,但我认为你需要一个别名:
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建议的那样,在子查询中
谢谢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
) ;
干杯克里斯