번호 수량1 수량2
1 10 5
2 20 10
3 30 5
4 40 10
5 50 5
수량2 합계를 구하여 (5+10+5+10+5) = 35
번호순으로 수량2합계에서 수량1을 차감합니다.
번호 수량1 총수량 수량2누적합계
1 10 0 수량2합 35에서 수량1의 10 차감 =25
2 20 0 수량2합 25에서 수량1의 20 차감=5
3 30 25 수량2합 5에서 수량1의5차감=0
4 40 40
5 50 50
결과값
번호 수량1 수량2 총수량
1 10 5 0
2 20 10 0
3 30 5 25
4 40 10 40
5 50 5 50
with Temp As
(
Select 1 번호, 10 수량1, 5 수량2
Union All Select 2, 20, 10
Union All Select 3, 30, 5
Union All Select 4, 40, 10
Union All Select 5, 50, 5
)
먼저 누적치를 구하신다음 차감을 하시는 방법으로...
with Temp As
(
Select 1 번호, 10 수량1, 5 수량2
Union All Select 2, 20, 10
Union All Select 3, 30, 5
Union All Select 4, 40, 10
Union All Select 5, 50, 5
) ,
res1 as
( select SUM(수량2) 기준수량
from Temp ) ,
res2 as (
select a.번호 , a.수량1 , a.수량2
, SUM(isnull(b.수량1 ,0)) 누적수량
from Temp a left join Temp b on a.번호 > b.번호
group by a.번호 , a.수량1 , a.수량2 )
select a.번호
, a.수량1
, a.수량2
, (case when (기준수량 - 누적수량) < 0 then 0 else (기준수량 - 누적수량) end ) 차감수량
, (case when a.수량1 - ( case when (기준수량 - 누적수량) < 0 then 0 else (기준수량 - 누적수량) end ) < 0
then 0
else a.수량1 - ( case when (기준수량 - 누적수량) < 0 then 0 else (기준수량 - 누적수량) end )
end) 총수량
from res2 a , res1 b