SQL Union Query - две таблицы доступа - PullRequest
0 голосов
/ 06 марта 2019

У меня два идентичных запроса в 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;

)

Пожалуйста, кто-нибудь может посоветовать, где я ошибаюсь?Если я удаляю оператор «Выбрать» верхнего уровня, я получаю две строки с итоговыми значениями в них, это когда я добавляю оператор верхнего уровня для их объединения.

Ответы [ 2 ]

2 голосов
/ 06 марта 2019

Обратите внимание, конечно, но я думаю, что вам нужен псевдоним:

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

edit : также удалите ";"внутри подзапроса, как предложил @jarlh

0 голосов
/ 06 марта 2019

Спасибо, 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

) ;

Приветствие Chris

...