안녕하세요 다들 설연휴 잘 보내셨나요? 설전부터 보기 시작해서 아직 못끝낸 쿼리문이 있어서;; ^^;;;
질문 하려고 합니다 ㅠ.ㅠ
WITH TBL_TEST(Idx, 코드, 결과, 금액)
AS
(
SELECT 1, 'A', 1500, 600 UNION ALL
SELECT 2, 'A', 1500, 400 UNION ALL
SELECT 3, 'A', 1500, 1500 UNION ALL
SELECT 4, 'B', 2000, 1000 UNION ALL
SELECT 5, 'B', 2000, 1000 UNION ALL
SELECT 6, 'B', 2000, 1000 UNION ALL
SELECT 7, 'c', 1000, 1000
)
위 테이블에서
코드를 묶어서 "결과"에 있는 숫자만큼 "금액"에서 잘라오는(선입선출)을 하고 있습니다.
아래와 같이 나오면 되는데... 제 실력으로 한계가 오네요... 고수님의 검토(?)가 필요합니다^^;
한번 만 봐주세요~
코드 결과 금액
A 1500 600
A 1500 400
A 1500 500
B 2000 1000
B 2000 1000
C 1000 1000
Comment 3
-
Terry
2016.02.11 13:39
-
정민채
2016.02.11 16:14
최곱니다! 대단하십니다 ^^;;
아무리 쌔가빠지게 파봐도 안되던걸;;; 대단합니다.
고맙습니다^^ 새해 복 많이 받으실거예요!!
-
Terry
2016.02.11 13:44
조건을 Case When 으로 억지로 맞추긴 했지만..
본문에 적어주신 샘플데이터를 토대로 한다면
하기처럼 나와야 하는게 아닌지요?
코드 결과 금액
A 1500 600
A 1500 400
A 1500 -1000
B 2000 1000
B 2000 1000
B 2000 -1000
C 1000 1000
하기쿼리 참고하세요...
---쿼리시작---
WITH TBL_TEST(Idx, 코드, 결과, 금액)
AS
(
SELECT 1, 'A', 1500, 600 UNION ALL
SELECT 2, 'A', 1500, 400 UNION ALL
SELECT 3, 'A', 1500, 1500 UNION ALL
SELECT 4, 'B', 2000, 1000 UNION ALL
SELECT 5, 'B', 2000, 1000 UNION ALL
SELECT 6, 'B', 2000, 1000 UNION ALL
SELECT 7, 'C', 1000, 1000
)
,tblA(Idx,코드,결과,금액,seq) As
(
Select a.*
,ROW_NUMBER() Over (PARTITION By a.코드 Order By a.코드,a.Idx)
From TBL_TEST a
)
,tblB(Idx,코드,결과,금액,잔액,seq) As
(
Select a.Idx
,a.코드
,a.결과
,a.금액
,a.결과 - a.금액
,a.seq
From tblA a
Where a.seq = 1
Union All
Select b.Idx
,b.코드
,b.결과
,( Case When a.잔액 - b.금액 < 0 Then a.잔액 Else b.금액 End )
,a.잔액 - b.금액
,b.seq
From tblB a Inner Join tblA b On a.코드 = b.코드
And a.seq = b.seq - 1
)
Select a.코드
,a.결과
,a.금액
-- ,a.잔액
From tblB a
Where a.금액 <> 0
Order By a.코드 Asc
,a.seq Asc
---쿼리끝---