SQL вычитает результаты 2 оператора select - PullRequest
0 голосов
/ 24 апреля 2018

У меня есть два запроса, которые прекрасно работают изолированно:

SELECT patient.patient_id, sum(cost)
FROM patient, appointment 
WHERE patient.patient_id = appointment.patient_id 
GROUP BY patient.patient_id

SELECT sum(payment_amount)
FROM patient, payment
WHERE patient.patient_id = payment.patient_id
GROUP BY patient.patient_id

Я хотел бы знать, как я могу вычесть результаты второго запроса из первого всоздать поле current_balance в моей таблице patient?

Ответы [ 2 ]

0 голосов
/ 24 апреля 2018

Я настоятельно рекомендую такой подход:

select patient_id, sum(cost) as cost, sum(payment) as payment,
       sum(cost) - sum(payment) as balance
from ((select a.patient_id, cost as cost, 0 as payment
       from appointment a
      ) union all
      (select p.patient_id, 0 as cost, payment
       from payment p
      )
     ) ap
group by patient_id;
0 голосов
/ 24 апреля 2018

Сверните оба запроса в один, а затем вычтите SUM s.

SELECT pat.patient_id, SUM(cost) SUMCOST, SUM(payment_amount) SUMpayment_amount, SUM(cost) - SUM(payment_amount) current_balance 
FROM patient pat
INNER JOIN payment pay ON pat.patient_id = pay.patient_id 
INNER JOIN appointment app ON pat.patient_id = app.patient_id
GROUP BY pat.patient_id
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...