아래처럼 데이터가 있습니다
일자 구분 금액
----------- ---------- ---------------
2015/10/01 정상 10,000
2015/10/01 반품 5,000
2015/10/03 정상 20,000
2015/10/04 반품 10,000
2015/10/05 정상 50,000
2015/10/05 반품 10,000
조회기간 2015/10/01~2015/10/31
일자 금액
------ ----------------
2015/10/01 5,000 (10,000-5,000)
2015/10/03 20,000 (20,000- 0 )
2015/10/04 -10,000 ( 0-10,000)
2015/10/05 40,000 (50,000-10,000)
* 정상금액 - 반품금액
Comment 4
-
Terry
2015.10.26 17:25
-
슈토파이터
2015.10.26 17:33
Terry 님 감사 합니다만
전 2000 이라서 wirh 구문을 쓸수 없습니다.
-
항해자™
2015.10.26 17:39
with는 테이블 대신에 사용한거니, tblA 대신 실제 테이블명을 사용하시면 되겠네요^^;; -
한태
2016.04.14 17:51
create table back(ymd datetime,code varchar(10),amt int)insert into back values('20151001','정상',10000),('20151001','반품',5000),('20151003','정상',20000),('20151004','반품',10000),('20151005','정상',50000),('20151005','반품',10000)create index back_ymd_code_amt on back(ymd,code,amt)select ymd, SUM(case when code='정상' then amt else 0 end)-SUM(case when code='반품' then amt else 0 end) 금액from backgroup by ymd
참고만 하세요..
---쿼리시작---
with tblA (ymd,code,amt) As
(
Select '20151001','정상',10000 Union All
Select '20151001','반품',5000 Union All
Select '20151003','정상',20000 Union All
Select '20151004','반품',10000 Union All
Select '20151005','정상',50000 Union All
Select '20151005','반품',10000
)
Select a.ymd
,Sum(a.amt) As amt
From (
Select
a.ymd
,(
Case When a.code ='반품'
Then -(a.amt)
Else a.amt
End
) As amt
From tblA a
) a
Group By a.ymd
---쿼리끝---