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

MySQL Open Balance Credit Debit Balance

Đây là cách bạn có thể làm điều đó ..

select 
s.client_id,
s.date,
s.op_balance as Open_Balance,
s.credit,
s.debit,
s.balance
from
(
  select 
  t.client_id,
  t.date,
  t.credit,
  t.debit,
  @tot_credit := if(@prev_client = t.client_id, @tot_credit + t.credit,t.credit) as tot_cred,
  @tot_debit := if(@prev_client = t.client_id,@tot_debit + t.debit,t.debit) as tot_deb,
  @cur_bal := if(@prev_client = t.client_id, @tot_credit - @tot_debit,t.credit-t.debit) as balance,
  (@cur_bal + t.debit) - t.credit as op_balance,
  @prev_client := t.client_id
  from(
    select * from stock order by client_id,date
  )t,(select @prev_client:=0,@cur_bal:=0,@tot_credit:=0,@tot_debit:= 0,@open_balance:=0)r
)s

DEMO

Ngoài ra, tôi nhận thấy rằng cùng một dữ liệu mà bạn có cột ngày tháng mà tôi đã sử dụng để thực hiện sắp xếp cho mỗi id khách hàng, nhưng thật tốt nếu có thời gian cho ngày tháng để việc sắp xếp không bị nhầm lẫn với cùng một ngày hoặc có thể là khóa chính trong bảng.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Có cách nào đơn giản để chuyển đổi dữ liệu MySQL thành Title Case không?

  2. Không thể chuyển tham số bằng tham chiếu trong MySQLi

  3. Cách nối hai bảng với ssp.class.php

  4. Cấu hình thư động với các giá trị từ cơ sở dữ liệu [Laravel]

  5. Đây có phải là cách an toàn để chuyển đổi bảng MySQL từ latin1 sang utf-8 không?