U8預測購貨數量和實際發貨數量對比分析
阿新 • • 發佈:2018-07-17
dha store 合並 bject select ted mco set begin USE [UFDATA_001_2017]
GO
/****** Object: StoredProcedure [dbo].[PROC_JDS_preorder] Script Date: 07/17/2018 16:50:22 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER OFF
GO
CREATE PROCEDURE [dbo].[PROC_JDS_preorder]
@cusname varchar(20)=null,@itemcode varchar(20)=null
AS
BEGIN
--如果臨時表存在就刪除
--select AAAA=@cusname,BBBB=@itemcode
IF OBJECT_ID('tempdb..#jds_20180713_1') is not null
drop table #jds_20180713_1
IF OBJECT_ID('tempdb..#jds_20180713_2') is not null
drop table #jds_20180713_2
--構建明細發貨數據及數據特征(包含退貨單數據,退貨單數據直接和發貨單合並)
--臨時表 #jds_20180713_1
SELECT a.ddate, a.ccuscode, a.ccusabbname, a.cinvcode, a.cinvname,a.cinvstd, a.inum, b.minddate, b.addhalfayear, b.addayear,
CASE WHEN a.ddate = b.minddate THEN 1 WHEN a.ddate > b.minddate AND a.ddate <= b.addhalfayear THEN 2 WHEN a.ddate > b.addhalfayear AND
a.ddate <= b.addayear THEN 3 ELSE 4 END AS salesign
into #jds_20180713_1
FROM dbo.Sa_SaleOrderAscendDis AS a INNER JOIN
(SELECT MIN(ddate) AS minddate, DATEADD(mm, 6, MIN(ddate)) AS addhalfayear, DATEADD(mm, 12, MIN(ddate)) AS addayear, ccuscode, cinvcode
FROM dbo.Sa_SaleOrderAscendDis AS Sa_SaleOrderAscendDis_1
GROUP BY ccuscode, cinvcode) AS b ON a.ccuscode = b.ccuscode AND a.cinvcode = b.cinvcode
-- 構建【客戶+產品】首次、半年、全年匯總發貨數據
--臨時表#jds_20180713_2
select ccuscode,ccusabbname,cinvcode,cinvname,cinvstd,minddate,SUM(case when salesign=1 then inum else 0 end) firstinum,
addhalfayear,SUM(case when salesign=1 or salesign=2 then inum else 0 end) halfyearinum,
addayear,SUM(case when salesign=1 or salesign=2 or salesign=3 then inum else 0 end) ayearinum
into #jds_20180713_2
from #jds_20180713_1
group by ccuscode,ccusabbname,cinvcode,cinvname,cinvstd,minddate,addhalfayear,addayear
--關聯預測單並求差值
select a.cCusCode 客戶編碼,a.cCusName 客戶名稱,a.cCode 預測單號,a.dDate 開戶日期,b.cInvCode 產品編碼,d.cinvname 產品名稱,d.cinvstd 產品規格,b.iNum 預首購件,b.cDefine34 預半年購件,b.cDefine35 預全年購件,
isnull(c.minddate,'無發貨') 首發日,isnull(c.firstinum,0) 首發件,cast((isnull(c.firstinum,0)/b.iNum) as decimal(4,2)) 首發比,(isnull(c.firstinum,0)-b.iNum) 首發差,c.addhalfayear 半年日,isnull(c.halfyearinum,0) 半年發件,cast((isnull(c.halfyearinum,0)/b.cDefine34) as decimal(4,2)) 半年比,(isnull(c.halfyearinum,0)-b.cDefine34) 半年差,
c.addayear 全年日,isnull(c.ayearinum,0) 全年發件,cast(ISNULL(c.ayearinum,0)/b.cDefine35 as decimal(4,2)) 全年比,(isnull(c.ayearinum,0)-b.cDefine35) 全年差
from SA_PreOrderMain a INNER JOIN SA_PreOrderDetails b
ON a.ID=b.ID inner join inventory d on b.cInvCode=d.cInvCode left join #jds_20180713_2 c on a.cCusCode=c.ccuscode and b.cinvcode=c.cInvCode
where 1=1 and (a.cCusName like '%'+@cusname+'%' or @cusname is null ) and (b.cInvCode like '%'+@itemcode+'%' or @itemcode is null)
drop table #jds_20180713_1
drop table #jds_20180713_2
END
GO
U8預測購貨數量和實際發貨數量對比分析