本文共 3593 字,大约阅读时间需要 11 分钟。
-- ============================================= -- Author: -- Create date: < 2015- 12- 22> -- Modify by: -- Description: for purchase> -- ============================================= ALTER PROC [dbo].[UP_ForcastForPur] as declare @NEEDAFTER BIT --需求日期后的需求是否纳入计算: 1->是; 0->否 declare @now as char( 8), @wkdate1 as char( 8), @wkdate2 as char( 8), @wkdate3 as char( 8), @wkdate4 as char( 8) set @NEEDAFTER= 1 set @now=convert( char( 8),getdate(), 112) set @wkdate1=convert( char( 8),dateadd(week, 1,getdate()), 112) set @wkdate2=convert( char( 8),dateadd(week, 2,getdate()), 112) set @wkdate3=convert( char( 8),dateadd(week, 3,getdate()), 112) set @wkdate4=convert( char( 8),dateadd(week, 4,getdate()), 112); with A --计算预计领用需求 as( select TB003 品号,ISNULL(SUM(TB004-TB005)*ISNULL(MD004, 1)/ISNULL(MD003, 1), 0) as 预计领用,TA009 as 领用日期 from MOCTA INNER JOIN MOCTB ON TA001=TB001 AND TA002=TB002 LEFT JOIN INVMD ON MD001=TB003 AND MD002=TB007 AND MD007= WHERE UPPER(TA011)<> AND LEFT(TB003, 3)= AND TB015 >=@now AND TB015 <@wkdate4 --TB015<=( CASE @NEEDAFTER WHEN 1 THEN -- AND TA009 >=@now AND TA009 <@wkdate4 group by TB003,TA009,MD004,MD003),B --计算安全库存量与现有库存量 as( select MC001 品号,MC004 安全库存,MC007 现有库存 from INVMC WHERE MC002= ), C --计算 4周预计领用分布 as( SELECT A.品号,预计领用, case when A.领用日期 >=@now AND A.领用日期 <@wkdate1 then when A.领用日期 >=@wkdate1 AND A.领用日期 <@wkdate2 then when A.领用日期 >=@wkdate2 AND A.领用日期 <@wkdate3 then when A.领用日期 >=@wkdate3 AND A.领用日期 <@wkdate4 then else FROM A )--计算结果 select pvt.品号,MB002 AS 品名,MB003 AS 规格,MA002 AS 主供应商,isnull(pvt.第一周, 0) as 第一周,isnull(pvt.第二周, 0) as 第二周,isnull(pvt.第三周, 0) as 第三周,isnull(pvt.第四周, 0) as 第四周,isnull(pvt.第一周, 0)+isnull(pvt.第二周, 0)+isnull(pvt.第三周, 0)+isnull(pvt.第四周, 0) 总需求, case when (isnull(pvt.第一周, 0)+isnull(pvt.第二周, 0)+isnull(pvt.第三周, 0)+isnull(pvt.第四周, 0)-现有库存)<= 0 then 0 else (isnull(pvt.第一周, 0)+isnull(pvt.第二周, 0)+isnull(pvt.第三周, 0)+isnull(pvt.第四周, 0)-现有库存) END as 缺料情况,现有库存, CASE WHEN MB034= WHEN MB034= WHEN MB034= WHEN MB034= else @now+ from ( select 品号,预计领用,所属周 from C) p PIVOT(SUM(预计领用) FOR 所属周 in([第一周],[第二周],[第三周],[第四周])) as pvt INNER JOIN INVMB ON pvt.品号=MB001 LEFT JOIN PURMA ON MB032=MA001 INNER JOIN B ON pvt.品号=B.品号 order by pvt.品号
转载地址:http://ydpii.baihongyu.com/