Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Sử dụng PHP MYSQLi làm cách nào để chỉ có con nợ và chỉ chủ nợ được quản lý bằng action_type DR và ​​CR

Có vẻ như bạn chỉ cần sửa đổi HAVING của mình , để lọc ra các trường hợp balance lớn hơn 0 (Con nợ) HOẶC balance nhỏ hơn 0 (Chủ nợ).

Bạn cũng có thể sử dụng IF() có điều kiện biểu thức để xác định dr / cr trong balance cột.

Để nhận được Con nợ chỉ:

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

Để nhận được Chủ nợ chỉ:

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Thêm các cột mới vào bảng hiện có trong quá trình di chuyển trong Laravel

  2. Sử dụng ORDER BY và GROUP BY cùng nhau

  3. Mở rộng các lớp trong cơ sở dữ liệu

  4. MySQL Chọn các hàng bằng một khóa hoặc lùi lại để chọn theo khóa mặc định

  5. Đóng các kết nối đang hoạt động bằng RMySQL