sql >> データベース >  >> RDS >> Mysql

PHP MYSQLiを使用して、action_typeDRおよびCRで管理される債務者と債権者のみを取得する方法

    HAVINGを変更するだけでよいようです 句、balanceの場合を除外します ゼロより大きい(債務者)またはbalance ゼロ未満です(債権者)。

    条件付きのIF()を使用することもできます dr / crを決定する式 balance 列。

    債務者を取得するには のみ:

    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
    

    債権者を取得するには のみ:

    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. sql::SQLStringの動作

    2. OSXでDjangoを使用してMySQLdbモジュールをロード中にエラーが発生しました

    3. SQLServerで整数を10進数に変換する方法

    4. IDENTITY列の値にギャップがあるのはなぜですか?