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

表の貸方と借方の列から実行中の残高を選択します

    テーブルに自分で参加する必要があります。

    CREATE TABLE Test( TransDate DATE, Credit INT, Debit INT,);INSERT INTO Test VALUES('2014-01-01', 5000, NULL), ('2014-01-07', NULL, 2000)、('2014-01-11'、5000、NULL)、('2014-02-03'、6000、NULL)、('2014-02-06'、NULL、4000)、('2014-02 -11', 3000, NULL), ('2014-02-21', NULL, 1000), ('2014-02-28', 2000, NULL), ('2014-03-01', 5000, NULL) WITH CTE AS(SELECT t2.TransDate, t2.Credit, t2.Debit, SUM(COALESCE(t1.credit, 0) - COALESCE(t1.debit, 0)) AS BalanceFROM Test t1 INNER JOIN Test t2 ON t1.TransDate <=t2.TransDateWHERE t1.DataSource IN (3,4) GROUP BY t2.TransDate, t2.Credit, t2.Debit)SELECT * FROM CTEWHERE (TransDate>='2014/01/11' AND TransDate <='2014/02 /28' )   

    アウトプット

    TransDate Credit Debit Balance2014-01-11 5000 (null) 80002014-02-03 6000 (null) 140002014-02-06 (null) 4000 100002014-02-11 3000 (null) 130002014-02-21 (ヌル) 1000 120002014-02-28 2000 (ヌル) 14000  

    SQL FIDDLE



    1. freeTDSはその構成を使用していません

    2. キーワードのoracleサブクエリは12cで遅い

    3. PostgreSQLに複数のENUM値を挿入します

    4. mysqlから2番目に新しい行を取得する方法は?