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

既存の残高から新しいランニング残高を取得するにはどうすればよいですか?

    Case statement あなたの状態を処理することができます。

    SELECT id ID, token TK, actual_pay PAY,
           IF(@rtp IS NULL, @rtp:=token, @rtp:[email protected]+actual_pay) RTP,
           IF(@bal IS NULL, @bal:=actual_pay-token, @bal:[email protected]) BAL,
    
           (case IF(@rtp IS NULL, @rtp:=token, @rtp:[email protected]+actual_pay)
             when IF(@rtp IS NULL, @rtp:=token, @rtp:[email protected]+actual_pay) <= 
                  (select token from token_table where id = a.id+1)
             then 1
            else 0
           end case) stat,
    
          (case IF(@bal IS NULL, @bal:=actual_pay-token, @bal:[email protected])
            when IF(@bal IS NULL, @bal:=actual_pay-token, @bal:[email protected]) <= 
                 (select token from token_table where id = a.id+1)
            then 0
           else 
            IF(@bal IS NULL, @bal:=actual_pay-token, @bal:[email protected]) - 
            (select token from token_table where id = a.id+1)
          end case) nbal,
    
          (case IF(@bal IS NULL, @bal:=actual_pay-token, @bal:[email protected])
            when IF(@bal IS NULL, @bal:=actual_pay-token, @bal:[email protected]) <= 
                 (select token from token_table where id = a.id+1)           
            then
                (select token from token_table where id = a.id+1)  -
                IF(@bal IS NULL, @bal:=actual_pay-token, @bal:[email protected])
           else 
            IF(@bal IS NULL, @bal:=actual_pay-token, @bal:[email protected]) - 
            (select token from token_table where id = a.id+1)
          end case) ntk
    
    FROM token_table a
    JOIN (SELECT @rtp:=NULL, @bal:=NULL) b;
    


    1. `in`句にすべての値を持つ列のみでクエリを結合します

    2. SQL Serverデータベースメール(T-SQL)から送信された電子メールのリストを返す

    3. カーボン日付をmysqlタイムスタンプに変換します。

    4. Mysql、個別の列でグループ化されたIDを選択します(一意のドメインごとにすべてのIDを選択します)