질문드립니다! 1 7 581

by 로로키 [SQL Query] [2021.06.23 16:21:41]


안녕하세요 ㅎㅎ 

역순으로 계산하려면 어떻게 해야할까요
 

by 우리집아찌 [2021.06.23 16:29:30]

rollup 쓰면 될거같은데 sql server 에서 지원되나 모르겠네요


by 마농 [2021.06.23 16:41:45]

질문이 잘 이해가 안가는데요.
1. "특정금액을 가져와서"?
- 특정금액을 어디서 가져오나요?
- 임의로 정해진 금액인지?
- 다른데서 읽어 오는 금액인지?
- 계산되어 나오는 금액인지?
2. "현재잔액" ?
- "현재잔액" 이 의미하는게 뭔가요?
3. "역순 계산" ?
- "역순 계산" 해당되는게 결과표에서 어디 있나요?


by 수다리 [2021.06.23 17:00:00]

1. 네 특정금액을 다른곳에서 가져올예정입니다.

그래서 SELECT ${현재잔액} from dual 이런식으로 UNION ALL할 것을 추가하려고 했습니다 ㅠㅠ

2,3. 죄송합니다 ㅠㅠ 결과표에 오류가 있었네요! 글 수정하여 표 수정하였습니다!

표와같이 현잔액을 미리 가져오면 거기서부터 역순으로 계산이되게하려고 합니다!


by 마농 [2021.06.23 17:20:43]

날짜 역순으로 현재 잔액 기준 이전 자료들의 잔액을 보고자 하는 듯 한데요.
1. 결과표 여전히 정렬에 오류가 있네요.
2. 첫행이 굳이 필요한가요? - 첫행 없이 두번째 행부터 보여줘도 상관 없을 듯 한데요?


by 수다리 [2021.06.23 18:17:38]

꼭 필요하진 않아요 ㅎㅎ 저 값이 있어야 계산이 편하게 될거라고 생각해서요ㅠㅠ 감사합니다 참고해서 해보겠습니다 ㅎㅎ


by 마농 [2021.06.23 17:53:14]
WITH t1 AS
(
SELECT '9999/12/31' dat, '현재잔액' nam, '기타' typ, 17500 price FROM dual
)
, t2 AS
(
SELECT '2021/03/21' dat, '가입축하금' nam, '적립' typ, 10000 price FROM dual
UNION ALL SELECT '2021/04/21', '가입축하금'    , '만료', -10000 FROM dual
UNION ALL SELECT '2021/04/28', '생일축하금'    , '적립',   8000 FROM dual
UNION ALL SELECT '2021/04/29', '지오다노'      , '사용',  -5000 FROM dual
UNION ALL SELECT '2021/05/05', '가정의달포인트', '적립',   3000 FROM dual
UNION ALL SELECT '2021/05/08', '스타벅스'      , '사용',  -3500 FROM dual
UNION ALL SELECT '2021/05/22', '지오다노'      , '취소',   5000 FROM dual
UNION ALL SELECT '2021/06/08', '룰렛포인트'    , '적립',  10000 FROM dual
)
SELECT dat, nam, typ, price, null remain_price
  FROM t1
 UNION ALL
SELECT dat, nam, typ, price
     , (SELECT price FROM t1) - SUM(price) OVER(ORDER BY dat DESC) + price remain_price
  FROM t2
;

 


by 마농 [2021.06.24 07:18:08]

다시 데이터를 살펴보니
애초에 17500 이라는 별도의 값이 필요 없어 보이네요.
순차적으로 누적시키면 자동으로 나오는 값이네요.

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

 

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입