从结果集中获取列总和

时间:2019-05-31 09:59:27

标签: php mysql

这使我得到两行相同的结果。我只需要一行。

我希望单行结果中的Paid列的总和,但这给了我最后两笔付款。如果我删除了DISTINCT,这将给我this

    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}}

0 个答案:

没有答案