Реализовать группировку, суммирование и вычитание таблиц в запросе SQL

В БД есть 3 таблицы. Нужно сделать запрос, что бы из просуммированного поля QUANTITY первой таблицы вычесть просуммированные поля с этим же кодом товара второй и третьей таблицы. GOOD - код товара

SELECT dst.GOOD, SUM(QUANTITY) FROM DOC_SESSION_TABLE dst 
WHERE GOOD=12300
GROUP BY GOOD

(данный запрос выдает: 12300 | 150)

SELECT dst2.GOOD, SUM(QUANTITY) FROM DOC_SALE_TABLE dst2
WHERE GOOD=12300
GROUP BY GOOD

(данный запрос выдает: 12300 | 100)

SELECT dbt.GOOD, SUM(QUANTITY) FROM DOC_BALANCE_TABLE dbt
WHERE GOOD=12300
GROUP BY GOOD

(данный запрос выдает: 12300 | 5)

Необходимый запрос должен вывести: 12300 | 45


Ответы (1 шт):

Автор решения: Andrew Nikolaev

Это то, о чём говорит @Mike

SELECT SQ.GOOD, SUM(SQ.QUANTITY) FROM
(
    SELECT dst.GOOD, dst.QUANTITY FROM DOC_SESSION_TABLE dst WHERE dst.GOOD=12300
    UNION ALL
    SELECT dst2.GOOD, -dst2.QUANTITY FROM DOC_SALE_TABLE dst2 WHERE dst2.GOOD=12300
    UNION ALL
    SELECT dbt.GOOD, -dbt.QUANTITY FROM DOC_BALANCE_TABLE dbt WHERE dbt.GOOD=12300
) SQ
GROUP BY SQ.GOOD
→ Ссылка