这使我得到两行相同的结果。我只需要一行。
我希望单行结果中的Paid
列的总和,但这给了我最后两笔付款。如果我删除了DISTINCT
,这将给我
SELECT DISTINCT pl.payment_type_id,
inv.exp_invoice_id,
( COALESCE(inv.payable, 0) - ( COALESCE(ad.adjust_amount, 0)
+ Sum(COALESCE(pl.paid, 0)) ) )AS
balance_payable,
inv.exp_ref_no,
inv.entry_date,
Sum(COALESCE(e.amount, 0)) AS
amount,
Sum(COALESCE(e.sgst, 0)) AS
sgst,
Sum(COALESCE(e.cgst, 0)) AS
cgst,
Sum(COALESCE(e.igst, 0)) AS
igst,
Sum(COALESCE(e.amount, 0) + COALESCE(e.sgst, 0)
+ COALESCE(e.cgst, 0) + COALESCE(e.igst, 0)) AS
total_amount,
( Sum(COALESCE(pl.paid, 0))
+ Sum(COALESCE(ad.adjust_amount, 0)) ) AS
paid,
( CASE
WHEN pl.payment_ledger_id IS NULL THEN 'Pending'
WHEN ( ( Sum(COALESCE(pl.paid, 0))
+ Sum(COALESCE(ad.adjust_amount, 0)) ) = COALESCE(
inv.payable, 0) )
THEN 'Completed'
ELSE 'Partial'
END ) AS
payment_status,
1 AS
payment_type_id
FROM svk_apt_expense_invoices inv
LEFT JOIN svk_apt_vendors v
ON v.vendor_id = inv.vendor_id
AND v.is_active = 1
LEFT JOIN svk_apt_expenses e
ON e.invoice_id = inv.exp_invoice_id
AND e.is_active = 1
LEFT JOIN svk_apt_accounting_ledgers al
ON al.ledger_type_id = inv.ledger_type_id
AND al.is_active = 1
LEFT JOIN svk_apt_payments_ledger pl
ON pl.payment_ledger_id IS NOT NULL
AND pl.payment_type_id = 1
AND pl.invoice_id = inv.exp_invoice_id
AND pl.is_active = 1
LEFT JOIN svk_apt_payment_advance_amount_adjust ad
ON type_id = 1
AND ad.exp_invoice_id = inv.exp_invoice_id
AND ad.is_active = 1
WHERE inv.exp_invoice_id = 202
AND inv.association_id = 98
AND inv.customer_id = 127
AND inv.is_completed = 0
AND inv.is_active = 1
GROUP BY inv.exp_invoice_id,
pl.payment_ledger_id
ORDER BY inv.exp_invoice_id DESC
带有DISTINCT
的{{3}}