Вычтите несколько значений из одной таблицы в другую в другой таблице - PullRequest
0 голосов
/ 25 июня 2019

enter image description here

Привет! Я пытаюсь добавить столбец с именем прибыль в таблицу накладной.Я хотел бы получить именно те значения, которые выделены красным.Эти значения являются вычитанием из столбца суммыUsd накладной таблицы в столбце MINUS таблицы carrierPayments amountUsd с использованием столбца loadNumber в качестве идентификатора.Это работает, если у меня есть одна carrierPayments на счет-фактуру, используя следующий запрос.

SELECT i.*, i.amountUsd - cp.amountUsd AS PROFIT FROM invoice i INNER JOIN carriersPayments cp ON i.loadNumber = cp.loadNumber

Но что, если у меня несколько платёжных услуг перевозчика с тем же loadNumber, что и с оранжевым фоном?Может ли быть возможно сделать вычитание более чем одного перевозчикаОплата за один счет?

Ответы [ 2 ]

0 голосов
/ 25 июня 2019
SELECT i.*, i.amountUsd - sum(cp.amountUsd) AS PROFIT FROM invoice i INNER JOIN carriersPayments cp ON i.loadNumber = cp.loadNumber group by cp.loadNumber
0 голосов
/ 25 июня 2019

Вы можете использовать join и group by:

select i.*,
       (i.amountUSD - coalesce(p.amountUSD, 0)) as profit
from invoice i left join
     (select p.loadNumber, sum(p.amountUSD) as amountUSD
      from carrierPayments p
      group by p.loadNumber
     ) p
     on p.loadNumber = i.loadNumber;
...