WITH t AS ( SELECT '2021/03/21' dat, '가입축하금' nam, '적립' typ, 10000 price FROM dual UNION ALL SELECT '2021/04/28', '생일축하금' , '적립', 8000 FROM dual UNION ALL SELECT '2021/05/05', '가정의달포인트', '적립', 3000 FROM dual UNION ALL SELECT '2021/06/08', '룰렛포인트' , '적립', 10000 FROM dual UNION ALL SELECT '2021/04/21', '가입축하금' , '만료', -10000 FROM dual UNION ALL SELECT '2021/04/29', '지오다노' , '사용', -5000 FROM dual UNION ALL SELECT '2021/05/08', '스타벅스' , '사용', -3500 FROM dual UNION ALL SELECT '2021/05/22', '지오다노' , '취소', -5000 FROM dual ) SELECT dat, nam, typ, price , SUM(DECODE(typ, '취소', -price, price)) OVER(ORDER BY dat) remain_price FROM t ;