Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Saldo Debit Kredit Saldo Terbuka MySQL

Ini caranya..

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

Saya juga telah memperhatikan bahwa data yang sama Anda memiliki kolom tanggal yang saya gunakan untuk melakukan pengurutan per id klien, tetapi ada baiknya memiliki datetime untuk tanggal sehingga penyortiran tidak menjadi bingung dengan tanggal yang sama atau mungkin menjadi kunci utama di meja.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cara membuat blog di PHP dan database MySQL - Desain DB

  2. Memahami Statistik HAProxy untuk MySQL &PostgreSQL

  3. Cara menggunakan indeks untuk meningkatkan kinerja kueri MySQL

  4. Bagaimana cara membagi string catatan yang dipisahkan koma dan mengaturnya secara berurutan di MySQL?

  5. Praktik terbaik bulk_create untuk catatan besar