SQL 联合查询 - 两个访问表
SQL Union Query - two access tables
我在 MS Access 中有两个相同的查询,qryLabour
和 qryMaterials
。我需要从三个字段中得到总数:Labour Mins
、Laser Mins
和 $ Cost
.
我知道这可以使用联合查询来完成,但是我已经很久没有使用联合查询了,而且我一直在 "Error in FROM Statement"。
我的 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" 语句,我会得到两行,其中包含总计,这是我添加顶级语句以合并两者的时候。
请注意,但我认为您需要一个别名:
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
) ;
干杯
克里斯
我在 MS Access 中有两个相同的查询,qryLabour
和 qryMaterials
。我需要从三个字段中得到总数:Labour Mins
、Laser Mins
和 $ Cost
.
我知道这可以使用联合查询来完成,但是我已经很久没有使用联合查询了,而且我一直在 "Error in FROM Statement"。
我的 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" 语句,我会得到两行,其中包含总计,这是我添加顶级语句以合并两者的时候。
请注意,但我认为您需要一个别名:
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
) ;
干杯 克里斯