87 lines
2.9 KiB
Transact-SQL
87 lines
2.9 KiB
Transact-SQL
DECLARE @DATE DATE,@STARTDATE DATETIME ,@ENDDATE DATETIME
|
|
SET @DATE = '2023-12-15'
|
|
SELECT
|
|
@STARTDATE = DATEADD(MONTH, DATEDIFF(MONTH, 0, @DATE), 0)
|
|
,@ENDDATE = DATEADD(MS,-3, DATEADD(MONTH, DATEDIFF(MONTH, 0, DATEADD(MONTH, 1, @DATE)), 0))
|
|
|
|
DECLARE @LCID INT
|
|
SET @LCID = 2052
|
|
SELECT
|
|
A.FBILLNO
|
|
,AE.FMATERIALID
|
|
,AE.FENTRYID
|
|
,C_L.FNAME AS '产品名称'
|
|
,C_L.FSPECIFICATION AS '规格型号'
|
|
--,(CASE
|
|
-- CS.FEXPUNIT
|
|
-- WHEN 'Y' THEN
|
|
-- CONVERT ( VARCHAR, CAST(CS.FEXPPERIOD AS INT) ) + '年'
|
|
-- WHEN 'M' THEN
|
|
-- CONVERT ( VARCHAR, CAST(CS.FEXPPERIOD AS INT) /12 ) + '年'
|
|
-- WHEN 'D' THEN
|
|
-- CONVERT ( VARCHAR, CAST(CS.FEXPPERIOD AS INT) /365) + '年' ELSE ''
|
|
--END) AS '有效期'
|
|
,(CASE
|
|
CS.FEXPUNIT
|
|
WHEN 'Y' THEN
|
|
CONVERT ( VARCHAR, CAST(CS.FEXPPERIOD AS INT) * 12 ) + '个月'
|
|
WHEN 'M' THEN
|
|
CONVERT ( VARCHAR, CAST(CS.FEXPPERIOD AS INT) ) + '个月'
|
|
WHEN 'D' THEN
|
|
CONVERT ( VARCHAR, CAST(CS.FEXPPERIOD AS INT) / 365 * 12) + '个月' ELSE ''
|
|
END) AS '有效期'
|
|
--,'' AS '标准批量'
|
|
--,CP.FLOTYIELD AS '每批产量'
|
|
--,CP.FPACKUNITCONVERRATIO AS '包装规格'
|
|
--,CP.FPACKUNITCONVERRATIO AS '包装规格-换算'
|
|
--,CP.FPACKUNITID AS '单位'
|
|
,CS.FSTOREUNITID AS '单位'
|
|
,'' AS '安全库存量(件)'
|
|
,CAST(CS.FSAFESTOCK AS INT) AS '安全库存数量'
|
|
,AE.FSEQ
|
|
--,AE.M01 AS '本月预计需求量'
|
|
--,AE.S01 AS '前三月发货量'
|
|
--,AE.S02 AS '前二月发货量'
|
|
--,AE.S03 AS '前一月发货量'
|
|
,'' AS '前三月发货量'
|
|
,'' AS '前二月发货量'
|
|
,'' AS '前一月发货量'
|
|
--,DE.FSRCBILLNO
|
|
--,EE_A.FSTOCKINQUAAUXQTY AS '已入库量'
|
|
--,'' AS '在生产量'
|
|
--,(EE_A.FSTOCKINQUAAUXQTY + 0) AS '合计库存量'
|
|
--,'' AS '计划生产批数'
|
|
--,(B.PlanQty / CP.FPACKUNITCONVERRATIO)AS '系统计划生产批数'
|
|
--,(B.VerifyQty / CP.FPACKUNITCONVERRATIO) AS '确认计划生产批数'
|
|
,B.VerifyQty AS '确认计划生产量'
|
|
--,DE.FREMARK AS '备注'
|
|
FROM
|
|
T_PLN_FORECAST A --预测单
|
|
LEFT JOIN T_PLN_FORECASTENTRY AE ON A.FID = AE.FID
|
|
LEFT JOIN (
|
|
SELECT
|
|
A.FMATERIALID
|
|
,A_B.FSALEORDERENTRYID
|
|
,SUM(case when A.FRELEASESTATUS = 1 then A.FDemandQty else 0 end) as 'PlanQty'
|
|
,SUM(case when A.FRELEASESTATUS = 2 then A.FDemandQty else 0 end) as 'VerifyQty'
|
|
FROM
|
|
T_PLN_PLANORDER A
|
|
LEFT JOIN T_PLN_PLANORDER_B A_B ON A.FID = A_B.FID
|
|
WHERE
|
|
A.FRELEASETYPE = 1 AND (A.FRELEASESTATUS = 1 OR A.FRELEASESTATUS = 2 )
|
|
group By
|
|
A.FRELEASETYPE
|
|
,A.FMATERIALID
|
|
,A_B.FSALEORDERENTRYID
|
|
) B ON B.FSALEORDERENTRYID = AE.FENTRYID
|
|
LEFT JOIN T_BD_MATERIAL C ON C.FMATERIALID = AE.FMATERIALID
|
|
LEFT JOIN T_BD_MATERIAL_L C_L ON C_L.FMATERIALID = AE.FMATERIALID
|
|
LEFT JOIN T_BD_MATERIALSTOCK CS ON CS.FMATERIALID = AE.FMATERIALID
|
|
LEFT JOIN T_BD_MATERIALPRODUCE CP ON CP.FMATERIALID = C.FMATERIALID
|
|
--LEFT JOIN T_PRD_MOENTRY_LK DE_LK ON DE_LK.FSID = B.FID
|
|
--LEFT JOIN T_PRD_MOENTRY DE ON DE.FENTRYID = DE_LK.FENTRYID
|
|
--LEFT JOIN T_PRD_MOENTRY EE ON EE.FMATERIALID = B.FMATERIALID --生产订单
|
|
--LEFT JOIN T_PRD_MOENTRY_A EE_A ON EE_A.FENTRYID = EE.FENTRYID AND EE.FID =EE_A.FID --生产订单
|
|
WHERE
|
|
A.FDATE BETWEEN @STARTDATE AND @ENDDATE
|