*STORE | *SALEDATE | *DEALNO | DEALTYPE | ORGSALEDATE | ORGDEALNO | AMOUNT |
K03 | 20150319 | 001 | 1 | NULL | NULL | 53000 |
K03 | 20150319 | 002 | 1 | NULL | NULL | 110000 |
K03 | 20150319 | 003 | 2 | 20150319 | 001 | -53000 |
K03 | 20150319 | 004 | 3 | 20150319 | 001 | 50000 |
K03 | 20150319 | 005 | 1 | NULL | NULL | 30000 |
K03 | 20150319 | 006 | 1 | NULL | NULL | 30000 |
K03 | 20150319 | 007 | 2 | 20150301 | 015 | -75000 |
K03 | 20150319 | 008 | 3 | 20150301 | 015 | 72000 |
K03 | 20150319 | 009 | 1 | NULL | NULL | 20000 |
K03 | 20150319 | 010 | 1 | NULL | NULL | 20000 |
(*표는 키값)
위와 같은 데이터를 가진 테이블이 있습니다.
각 DEALTYPE 은 1 = 결제 / 2 = 취소 / 3 = 재결제 인데요....
3/19 일자 최종 매출금액 집계를 뽑을때(매출일자는 SALEDATE 입니다.) ORGSALEDATE = SALEDATE / ORGDEALNO = DEALNO 가 같은 데이터를 제외하고 뽑아내려고 합니다. 이유는 그래야 결제-취소+재결제 가 정상적인 최종 결제금액이 되기때문인데요.... 그래서 ORGSALEDATE = SALEDATE / ORGDEALNO = DEALNO 데이터를 뽑돼...DEALTYPE = 3 인 데이터는 제외되면 안됩니다...ㅠㅠ
어떻게 원하는 데이터를 추출할수 있을까요?
제외할 데이터만 임시테이블에 넣어 제외하여 뽑는 방법 외엔 한번에 SELECT 로는 불가할까요??
도와주세요~~ㅠㅠ
NULL |
제가 이해를 잘못한게 아니라면..
다 가져오는게 맞지 싶은데요?
1. 해당테이블에서 dealtype 이 1인건만 select
2. 서브쿼리 작성..store, saledate,orgsaledate,orgdealno 로 그룹잡아서 sum(amount)
3. 1의 메인테이블과 2의 서브쿼리데이터 left outer join.. on절에는 2의 그룹조건들을 토대로 join
4. 1의 amount + 2의 amount = 매출..
핸드폰으로 적는거라 빡세네요..ㅡ.ㅡ;;
줄맞춤이랑 with문은 도무지 어려울거같음..
간단쿼리예제
Select a.store
,a.saledate
,a.dealno
,a.amount + isnull(b.amount) as total_amount
From table a
Left outer join
(
Select a.store
,a.orgsaledate
,a.orgdealno
,sum(a.amount) as amount
From table a
Where a.dealtype <> 1
Group by a.store
,a.orgsaledate
,a.orgdealno
) b
On a.store = b.store
And a.saledate = b.orgsaledate
And a.dealno = b.orgdealno
Where a.dealtype = 1
핸드폰으로 적는건 사람이 할짓이 못되는군요..ㅡ.ㅡ;;;;