계속 유사한 질문을 올리게 되네요.
그런데 응용도 잘 안되고... 해서... 문의만 올립니다.
매출액이 몇년간 걸쳐 있는데요.
매출월 | 매출액 | 매출월 | 매출액 | 매출월 | 매출액 |
2013-01 | 500000 | 2014-01 | 500000 | 2015-01 | 500000 |
2013-02 | 500000 | 2014-02 | 500000 | 2015-02 | 500000 |
2013-03 | 500000 | 2014-03 | 500000 | 2015-03 | 500000 |
2013-04 | 500000 | 2014-04 | 500000 | 2015-04 | 500000 |
2013-05 | 500000 | 2014-05 | 500000 | 2015-05 | 500000 |
2013-06 | 500000 | 2014-06 | 500000 | 2015-06 | 500000 |
2013-07 | 500000 | 2014-07 | 500000 | 2015-07 | 500000 |
2013-08 | 500000 | 2014-08 | 500000 | 2015-08 | 500000 |
2013-09 | 500000 | 2014-09 | 500000 | 2015-09 | 500000 |
2013-10 | 500000 | 2014-10 | 500000 | 2015-10 | 500000 |
2013-11 | 500000 | 2014-11 | 500000 | 2015-11 | 500000 |
2013-12 | 500000 | 2014-12 | 500000 | 2015-12 | 500000 |
기간별로 특정 요율을 적용하여 비용을 처리를 해야 합니다.
시작일 | 종료일 | Rate1 | Rate2 |
2010-01 | 2010-12 | 2.4 | 4.3 |
2011-01 | 2011-12 | 4.1 | 4.9 |
2012-01 | 2012-03 | 4.5 | 6.5 |
2012-04 | 2013-03 | 8.9 | 6.2 |
2013-04 | 2014-03 | 7.4 | 5.6 |
2014-01 | 2015-03 | 4.5 | 6.5 |
매출월에 따라 해당기간에 포함되어져 있는 Rate1, Rate2를 곱하여서 값을 뽑아야 합니다.
그런데 요율이 정해져 있는 기간에 대해서는 해당 Rate1, Rate2를 적용을 하면 되는데요.
없는 것들에 대해서는 가장 가까운 기간의 요율을 적용시켜서 넣을 수 있을까요?
아니면 최종 요율을 적용을 시켜도 되구요.
매출월 | 매출액 | rate1 | 환산값 | 매출월 | 매출액 | rate1 | 환산값 | 매출월 | 매출액 | rate1 | 환산값 |
2013-01 | 500000 | 8.9 | 4450000 | 2014-01 | 500000 | 7.4 | 3700000 | 2015-01 | 500000 | 4.5 | 2250000 |
2013-02 | 500000 | 8.9 | 4450000 | 2014-02 | 500000 | 7.4 | 3700000 | 2015-02 | 500000 | 4.5 | 2250000 |
2013-03 | 500000 | 8.9 | 4450000 | 2014-03 | 500000 | 7.4 | 3700000 | 2015-03 | 500000 | 4.5 | 2250000 |
2013-04 | 500000 | 7.4 | 3700000 | 2014-04 | 500000 | 4.5 | 2250000 | 2015-04 | 500000 | 4.5 | 2250000 |
2013-05 | 500000 | 7.4 | 3700000 | 2014-05 | 500000 | 4.5 | 2250000 | 2015-05 | 500000 | 4.5 | 2250000 |
2013-06 | 500000 | 7.4 | 3700000 | 2014-06 | 500000 | 4.5 | 2250000 | 2015-06 | 500000 | 4.5 | 2250000 |
2013-07 | 500000 | 7.4 | 3700000 | 2014-07 | 500000 | 4.5 | 2250000 | 2015-07 | 500000 | 4.5 | 2250000 |
2013-08 | 500000 | 7.4 | 3700000 | 2014-08 | 500000 | 4.5 | 2250000 | 2015-08 | 500000 | 4.5 | 2250000 |
2013-09 | 500000 | 7.4 | 3700000 | 2014-09 | 500000 | 4.5 | 2250000 | 2015-09 | 500000 | 4.5 | 2250000 |
2013-10 | 500000 | 7.4 | 3700000 | 2014-10 | 500000 | 4.5 | 2250000 | 2015-10 | 500000 | 4.5 | 2250000 |
2013-11 | 500000 | 7.4 | 3700000 | 2014-11 | 500000 | 4.5 | 2250000 | 2015-11 | 500000 | 4.5 | 2250000 |
2013-12 | 500000 | 7.4 | 3700000 | 2014-12 | 500000 | 4.5 | 2250000 | 2015-12 | 500000 | 4.5 | 2250000 |
이런식의 내용으로 뽑아오고 싶습니다.
없는 것들에 대해서 뽑기 위해서는 어떻게 해야 할까요?
Comment 1
-
Hisory
2014.04.30 14:37
declare @Tb1 table
(
ym varchar(7)
, pri int
)
declare @Tb2 table
(
ym1 varchar(7)
,ym2 varchar(7)
, rate1 decimal(9,2)
, rate2 decimal(9,2)
)
declare @i int
set @i = 1
while ( @i < 13) begin
insert @Tb1(ym , pri )
values('2013-'+(case when @i < 10 then '0' else '' end)+Convert(Varchar,@i),500000)
,('2014-'+(case when @i < 10 then '0' else '' end)+Convert(Varchar,@i ),500000)
,('2015-'+(case when @i < 10 then '0' else '' end)+Convert(Varchar,@i ),500000)
set @i = @i + 1
end
insert @Tb2
values('2010-01','2010-12','2.4','4.3')
,('2011-01','2011-12','4.1','4.9')
,('2012-01','2012-03','4.5','6.5')
,('2012-04','2013-03','8.9','6.2')
,('2013-04','2014-03','7.4','5.6')
,('2014-01','2015-03','4.5','6.5')
Select * , pri * rate1 as prirate From @Tb1 As t1
outer Apply
(
select top 1 * from
(
select top 1 * , 1 as ra from @tb2
Where ym1 <= t1.ym
And ym2 >= t1.ym
union all
select top 1 * , 2 as ra from @tb2
Where ym1 < t1.ym or ym2 > t1.ym
order by ym1 asc
) as tmp
order by ra asc
) as tt2