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

MySQLオープンバランスクレジットデビット残高

    ここでそれを行う方法を説明します。

    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
    

    デモ

    また、クライアントIDごとに並べ替えを行うために使用した日付列と同じデータに気付きましたが、並べ替えが同じ日付と混同されたり、主キーになることがないように、日付の日時を指定することをお勧めします。テーブル。



    1. 同じ列で異なる値がカウントされます

    2. Androidを使用してsqliteで行数を取得するにはどうすればよいですか?

    3. MySQLデータベースからの制約のリスト

    4. SQL Server(T-SQL)でのREPLICATE()関数のしくみ