결과물은 아래와 같이 나와야 해요..
년월 수량 금액
2015/01 1000 10000000
2015/02 5000 50000000
2015/03 4500 60000000
...
그런데, 여기서 2015/01은 실제로 2014/11+2014/12+2015/01의 수량을 모두 더한것의 평균입니다.
예로
2014/11 10 1000
2014/12 20 2000
2015/01 10 1000
------------------------------해서
2015/01 13 1333
2014/12 10 5000
2015/01 20 10000
2015/02 10 20000
-----------------------------해서
2015/02 13 11,666
............
===>
2015/01 13 1333
2015/02 13 11666
이렇게 하고 싶은데요..
sql을 어떻게 짜야할지요?
SELECT 년월, SUM(수량), SUM(금액) FROM 테스트자료
GROUP BY 년월
하면 위와 같이는 안되거든요..
뭔가 아이디어가 없을까요?
아니면 팁이라도?
고수님들~~도와주세요..
Comment 2
-
Fos God
2015.08.25 14:53
초보로써 공부하는 마음으로 한번 올려봅니다.
create table #test
(
yyyymm nvarchar(6)
,qty numeric(20)
,price numeric(20)
)insert into #test select '201501' , 10 , 1000
insert into #test select '201502' , 11 , 1100
insert into #test select '201503' , 12 , 1200
insert into #test select '201504' , 13 , 1300
insert into #test select '201505' , 14 , 1400
insert into #test select '201506' , 15 , 1500
insert into #test select '201507' , 16 , 1600
insert into #test select '201508' , 17 , 1700
insert into #test select '201509' , 18 , 1800
insert into #test select '201510' , 18 , 1800
insert into #test select '201511' , 18 , 1800
insert into #test select '201512' , 18 , 1800
insert into #test select '201601' , 18 , 22000
select max(b.yyyymm) as yyyymm
, avg(b.qty) as qty
, avg(b.price) as price
from #test as a
left
join (select yyyymm
, qty
, price
from #test as b
) as b
on a.yyyymm between b.yyyymm and convert(nvarchar(6) , dateadd(M, 2, b.yyyymm + '01') , 112)
group by a.yyyymm, a.qty , a.price
항상 -2월 -1월 현재월을 SUMMARY 하는건가요?
그렇다면 동일 테이블을 3개를 조인하면 될듯 합니다.
FROM TBL1 A LEFT OUTER JOIN TBL1 B ON A.년월 = B.년월 + 1 LEFT OUTER JOIN TBL1 C ON A.년월 = C.년월 + 2
이런식으로요.
+1, +2는 제가 힌트만 드리느라 임의로 쓴거고 실제로는 DATEADD 함수를 이용하시면 됩니다.