declare @N_preStockQty numeric(13,2) --이전달을 구한다. declare @C_PreMonth varchar(6) set @C_PreMonth='' select @C_PreMonth=convert(varchar(6),dateadd(MONTH,-1,@A_CurrentDay),112) --이전달의 기말 재고를 구한다. declare @C_lastQty numeric(13,2) set @C_lastQty=0 select @C_lastQty=isNull(stockQty,0)+isNull(upQty,0)-isNull(lossQty,0) from stockMonth with(NOLOCK) where dealerCode=@A_DealerCode and stockMonth=@C_PreMonth and materialCode=@A_MaterialCode --당월의 시작일을 구한다. declare @C_StartDay varchar(8) set @C_StartDay='' select @C_StartDay=substring(@A_CurrentDay,1,6)+'01' --출고수량 declare @C_outQty numeric(13,2) set @C_outQty=0 select @C_outQty=sum(materialqty-rtnQty) from orders with(NOLOCK) where dealerCode=@A_DealerCode and isWareHouse='W' and storeCode<>'9999' and materialCode=@A_MaterialCode and stockinDay between @C_StartDay and @A_CurrentDay group by materialCode --입고수량 declare @C_inQty numeric(13,2) set @C_inQty=0 select @C_inQty=sum(materialqty-rtnQty) from orders with(NOLOCK) where dealerCode=@A_DealerCode and materialCode=@A_MaterialCode and stockinDay between @C_StartDay and @A_CurrentDay and isWareHouse='W' and storeCode='9999' group by materialCode --로스수량 declare @C_lossQty numeric(13,2) set @C_lossQty=0 select @C_lossQty=(sum(upQty)-sum(lossQty)) from stockDay_LossUp with(NOLOCK) where dealerCode=@A_DealerCode and materialCode=@A_MaterialCode and stockDay between @C_StartDay and @A_CurrentDay select @N_preStockQty=isNull(@C_lastQty,0)+isNull(@C_inQty,0)-isNull(@C_outQty,0)+isNull(@C_lossQty,0) -- @C_lastQty : 전월 재고 5 -- @C_inQty : 해당 월 초부터 입고일자까지 입고 수량 0 -- @C_outQty : 출고수량(창고출고로 발주한 수량) 3 -- @C_lossQty : 로스수량(upQty - lossQty) -3 Return isNull(@N_preStockQty,0) END
스칼라함수를 만들어서 stockQty를 반환하는데
같은날에 upQty와 lossQty가 들어오면 각각 계산을 안하고 한꺼번에 계산을 해버립니다..
-124.00 에서 lossQty가 3.00이 들어왔으니 -127.00이 되어야하는데 같은날에서 upQty인 10.00이 들어와서 -117.00으로 결과를
나타내버립니다..