Транзакции, счета и отношения документов в SQL - PullRequest
0 голосов
/ 24 апреля 2019

У меня проблемы с вычислением запроса для транзакций и отношений.

Итак, у меня есть документы таблица: (id, name, total_value, id_partner)

и отношения таблица: (id_parent, id_child, value).

документы таблица хранит транзакции и счета Отношения В таблице хранятся отношения между транзакциями и счетами

транзакция может оплатить несколько счетов.

Что я получил до сих пор:

SELECT  DCS.ID,
    DCS.ID_PARTNER,
        DCS.TOTAL_VALUE,
        COALESCE(ASDR.[PAID], 0) [PAID_VALUE],
        (DCS.TOTAL_VALUE - COALESCE(ASDR.[PAID], 0)) [UNPAID_VALUE]
        FROM DOCUMENTS DCS

LEFT JOIN (SELECT SDR.ID_PARENT, SUM(SDR.VALUE) [PAID] FROM RELATIONS SDR GROUP BY SDR.ID_PARENT) ASDR ON (DCS.ID = ASDR.ID_PARENT)

WHERE  DCS.ID_PARTNER = 25

Мой запрос должен возвращать оплаченные счета по текущей транзакции и партнеру и неоплаченные счета для текущего партнера.

Если счет полностью оплачен другой транзакцией, он не должен отображаться в текущей транзакции.

Если счет частично оплачен другой транзакцией, он должен отображаться в текущей транзакции.

Также я должен вернуть всю оплаченную сумму по счету.

SQL Fiddle : http://sqlfiddle.com/#!18/76bce/2

1 Ответ

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

Я бы сделал что-то вроде:

select
  d.*,
  coalesce(sum(r.value), 0) as paid_value,
  d.total_value - coalesce(sum(r.value), 0) as unpaid_value
from documents d
left join relations r on r.id_parent = d.id
where d.id_partner = 25
group by d.id
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...