sql >> Database >  >> RDS >> Mysql

MySQL Open Saldo Credit Debet Saldo

Hier hoe je het kunt doen..

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

Ik heb ook gemerkt dat dezelfde gegevens die je hebt een datumkolom die ik heb gebruikt om per klant-ID te sorteren, maar het is goed om datetime voor datum te hebben, zodat de sortering niet verward raakt met dezelfde datum of een primaire sleutel kan zijn in de tafel.



  1. Rijniveauvergrendeling in Mysql

  2. 6 manieren om een ​​string te converteren naar een datum/tijd-waarde in SQL Server

  3. hoe het tijdstempelformaat in mysql te veranderen

  4. FNDCPASS &AFPASSWD