我在计算交易和关系查询时遇到麻烦。
所以我有 documents 表:(id,名称,total_value,id_partner)
和 关系 表:(id_parent,id_child,值)。
文档 表存储交易和发票 关系 表存储交易和发票之间的关系
一笔交易可以支付多张发票。
到目前为止,我得到的是:
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
我的查询应按当前交易和合作伙伴返回已付款的发票,以及当前合作伙伴的未付款的发票。
如果发票由另一笔交易全额支付,则不应在当前交易中显示。
如果发票由另一笔交易部分支付,则应在当前交易中显示。
我还必须退还发票的总付款额。
答案 0 :(得分:0)
我会做类似的事情:
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