sql >> Database teknologi >  >> RDS >> Mysql

Brug af PHP MYSQLi hvordan man kun får debitorer og kun kreditorer administreret med action_type DR og CR

Det ser ud til, at du blot skal ændre din HAVING klausul, for at bortfiltrere tilfælde, hvor balance er enten mere end nul (Debitor) ELLER balance er mindre end nul (Kreditør).

Du kan også bruge betinget IF() udtryk for at bestemme dr/cr i balance kolonne.

For at få debitorer kun:

SELECT client_id, 
       Sum(Coalesce(CASE 
                      WHEN action_type = 'dr' THEN amount 
                    end, 0)) AS total_debits, 
       Sum(Coalesce(CASE 
                      WHEN action_type = 'cr' THEN amount 
                    end, 0)) AS total_credits, 
       Sum(Coalesce(CASE 
                      WHEN action_type = 'cr' THEN amount 
                    end, 0)) - Sum(Coalesce(CASE 
                                              WHEN action_type = 'dr' THEN 
                                              amount 
                                            end, 0)) AS total_debtors, 
       IF(Sum(Coalesce(CASE 
                         WHEN action_type = 'cr' THEN amount 
                       end, 0)) - Sum(Coalesce(CASE 
                                                 WHEN action_type = 'dr' THEN 
                                                 amount 
                                               end, 0)) > 0, 'dr', 'cr') AS balance 
FROM   tbl_balancesheet 
GROUP  BY client_id 
HAVING balance = 'dr' AND total_debtors <> 0

For at få Kreditører kun:

SELECT client_id, 
       Sum(Coalesce(CASE 
                      WHEN action_type = 'dr' THEN amount 
                    end, 0)) AS total_debits, 
       Sum(Coalesce(CASE 
                      WHEN action_type = 'cr' THEN amount 
                    end, 0)) AS total_credits, 
       Sum(Coalesce(CASE 
                      WHEN action_type = 'cr' THEN amount 
                    end, 0)) - Sum(Coalesce(CASE 
                                              WHEN action_type = 'dr' THEN 
                                              amount 
                                            end, 0)) AS total_debtors, 
       IF(Sum(Coalesce(CASE 
                         WHEN action_type = 'cr' THEN amount 
                       end, 0)) - Sum(Coalesce(CASE 
                                                 WHEN action_type = 'dr' THEN 
                                                 amount 
                                               end, 0)) > 0, 'dr', 'cr') AS balance 
FROM   tbl_balancesheet 
GROUP  BY client_id 
HAVING balance = 'cr' AND total_debtors <> 0


  1. Magento:Tilføj produktattributter med modulinstallationsscript

  2. MySQL Opdel kommasepareret streng i Temp-tabel

  3. Indeks en MySQL-database med Apache Lucene, og hold dem synkroniserede

  4. Hvordan får jeg oplysninger om dato/klokkeslæt fra en TIMESTAMP-kolonne?