更新销售合同/提成/业绩、精工工序工价/生产审核/工时统计、仓储盘点/库存/补货/入库/库房管理,新增提成设置/销售业绩/库房管理/入库单移动端等模块及SQL脚本
This commit is contained in:
143
sql/库存查询_需求量与明细一致性排查.sql
Normal file
143
sql/库存查询_需求量与明细一致性排查.sql
Normal file
@@ -0,0 +1,143 @@
|
||||
-- 库存查询需求量与需求量明细一致性排查;修改人:Ld 修改时间:2026-07-24 08:00:00;
|
||||
SET NOCOUNT ON;
|
||||
|
||||
;WITH 组件订单 AS
|
||||
(
|
||||
SELECT c.组件流水号,o.订单编号,c.是否分配,o.订单类型,o.是否提交,p.是否启用,ISNULL(k.简称,'') AS 简称
|
||||
FROM dbo.PDM_组件名称 c
|
||||
INNER JOIN dbo.PDM_机床名称 m ON c.机床流水号=m.机床流水号
|
||||
INNER JOIN dbo.PDM_项目名称 p ON m.项目流水号=p.项目流水号
|
||||
INNER JOIN dbo.合同管理_订单信息_基础表 o ON p.项目流水号=o.项目流水号
|
||||
LEFT JOIN dbo.客户关系管理系统_客户名称 k ON p.客户流水号=k.客户流水号
|
||||
),
|
||||
需求明细 AS
|
||||
(
|
||||
SELECT co.订单编号,b.组件流水号,b.物料流水号,SUM(ISNULL(b.零件数量,0)) AS 需求量,N'生产订单需求' AS 来源
|
||||
FROM dbo.PDM_零件明细表_基本件 b
|
||||
INNER JOIN 组件订单 co ON b.组件流水号=co.组件流水号
|
||||
WHERE co.是否分配=1 AND co.订单类型<>3 AND NOT (ISNULL(co.是否提交,0)=6 AND ISNULL(co.是否启用,0)=1)
|
||||
GROUP BY co.订单编号,b.组件流水号,b.物料流水号
|
||||
UNION ALL
|
||||
SELECT co.订单编号,s.组件流水号,s.物料流水号,SUM(ISNULL(s.零件数量,0)) AS 需求量,N'生产订单需求' AS 来源
|
||||
FROM dbo.PDM_零件明细表_标准件和外购件 s
|
||||
INNER JOIN 组件订单 co ON s.组件流水号=co.组件流水号
|
||||
WHERE co.是否分配=1 AND co.订单类型<>3 AND NOT (ISNULL(co.是否提交,0)=6 AND ISNULL(co.是否启用,0)=1)
|
||||
GROUP BY co.订单编号,s.组件流水号,s.物料流水号
|
||||
UNION ALL
|
||||
SELECT co.订单编号,t.组件流水号,t.物料流水号,SUM(ISNULL(t.实领数,0)) AS 需求量,N'临时领料需求' AS 来源
|
||||
FROM dbo.车间装配管理_装配执行_临时领料明细 t
|
||||
LEFT JOIN 组件订单 co ON t.组件流水号=co.组件流水号
|
||||
WHERE t.物料流水号 IS NOT NULL AND NOT (ISNULL(co.是否提交,0)=6 AND ISNULL(co.是否启用,0)=1)
|
||||
GROUP BY co.订单编号,t.组件流水号,t.物料流水号
|
||||
),
|
||||
已领明细 AS
|
||||
(
|
||||
SELECT co.订单编号,b.组件流水号,b.物料流水号,SUM(ISNULL(l.已领数量,0)) AS 已领数
|
||||
FROM dbo.车间装配管理_领料单明细 l
|
||||
INNER JOIN dbo.PDM_零件明细表_基本件 b ON l.基本件流水号=b.基本件流水号
|
||||
INNER JOIN 组件订单 co ON b.组件流水号=co.组件流水号
|
||||
WHERE NOT (ISNULL(co.是否提交,0)=6 AND ISNULL(co.是否启用,0)=1)
|
||||
GROUP BY co.订单编号,b.组件流水号,b.物料流水号
|
||||
UNION ALL
|
||||
SELECT co.订单编号,s.组件流水号,s.物料流水号,SUM(ISNULL(l.已领数量,0)) AS 已领数
|
||||
FROM dbo.车间装配管理_领料单明细 l
|
||||
INNER JOIN dbo.PDM_零件明细表_标准件和外购件 s ON l.标准件和外购件流水号=s.标准件和外购件流水号
|
||||
INNER JOIN 组件订单 co ON s.组件流水号=co.组件流水号
|
||||
WHERE NOT (ISNULL(co.是否提交,0)=6 AND ISNULL(co.是否启用,0)=1)
|
||||
GROUP BY co.订单编号,s.组件流水号,s.物料流水号
|
||||
UNION ALL
|
||||
SELECT co.订单编号,l.组件流水号,l.物料流水号,SUM(ISNULL(l.已领数量,0)) AS 已领数
|
||||
FROM dbo.车间装配管理_领料单明细 l
|
||||
LEFT JOIN 组件订单 co ON l.组件流水号=co.组件流水号
|
||||
WHERE l.物料流水号 IS NOT NULL AND ISNULL(l.物料流水号,0)<>0 AND ISNULL(l.基本件流水号,0)=0 AND ISNULL(l.标准件和外购件流水号,0)=0 AND NOT (ISNULL(co.是否提交,0)=6 AND ISNULL(co.是否启用,0)=1)
|
||||
GROUP BY co.订单编号,l.组件流水号,l.物料流水号
|
||||
),
|
||||
已领汇总 AS
|
||||
(
|
||||
SELECT 订单编号,组件流水号,物料流水号,SUM(已领数) AS 已领数
|
||||
FROM 已领明细 GROUP BY 订单编号,组件流水号,物料流水号
|
||||
),
|
||||
明细 AS
|
||||
(
|
||||
SELECT d.订单编号,d.组件流水号,d.物料流水号,d.需求量,ISNULL(l.已领数,0) AS 已领数,
|
||||
CASE WHEN d.需求量>ISNULL(l.已领数,0) THEN d.需求量-ISNULL(l.已领数,0) ELSE 0 END AS 最终需求量,d.来源
|
||||
FROM 需求明细 d
|
||||
LEFT JOIN 已领汇总 l ON d.物料流水号=l.物料流水号 AND d.组件流水号=l.组件流水号 AND ISNULL(d.订单编号,'')=ISNULL(l.订单编号,'')
|
||||
),
|
||||
明细汇总 AS
|
||||
(
|
||||
SELECT 物料流水号,SUM(最终需求量) AS 明细最终需求量
|
||||
FROM 明细 WHERE 最终需求量<>0 GROUP BY 物料流水号
|
||||
)
|
||||
SELECT COUNT(*) AS 明细有需求物料数,SUM(明细最终需求量) AS 明细最终需求量合计 FROM 明细汇总;
|
||||
|
||||
;WITH 组件订单 AS
|
||||
(
|
||||
SELECT c.组件流水号,o.订单编号,c.是否分配,o.订单类型,o.是否提交,p.是否启用
|
||||
FROM dbo.PDM_组件名称 c
|
||||
INNER JOIN dbo.PDM_机床名称 m ON c.机床流水号=m.机床流水号
|
||||
INNER JOIN dbo.PDM_项目名称 p ON m.项目流水号=p.项目流水号
|
||||
INNER JOIN dbo.合同管理_订单信息_基础表 o ON p.项目流水号=o.项目流水号
|
||||
),
|
||||
需求明细 AS
|
||||
(
|
||||
SELECT co.订单编号,b.组件流水号,b.物料流水号,SUM(ISNULL(b.零件数量,0)) AS 需求量
|
||||
FROM dbo.PDM_零件明细表_基本件 b
|
||||
INNER JOIN 组件订单 co ON b.组件流水号=co.组件流水号
|
||||
WHERE co.是否分配=1 AND co.订单类型<>3 AND NOT (ISNULL(co.是否提交,0)=6 AND ISNULL(co.是否启用,0)=1)
|
||||
GROUP BY co.订单编号,b.组件流水号,b.物料流水号
|
||||
UNION ALL
|
||||
SELECT co.订单编号,s.组件流水号,s.物料流水号,SUM(ISNULL(s.零件数量,0)) AS 需求量
|
||||
FROM dbo.PDM_零件明细表_标准件和外购件 s
|
||||
INNER JOIN 组件订单 co ON s.组件流水号=co.组件流水号
|
||||
WHERE co.是否分配=1 AND co.订单类型<>3 AND NOT (ISNULL(co.是否提交,0)=6 AND ISNULL(co.是否启用,0)=1)
|
||||
GROUP BY co.订单编号,s.组件流水号,s.物料流水号
|
||||
UNION ALL
|
||||
SELECT co.订单编号,t.组件流水号,t.物料流水号,SUM(ISNULL(t.实领数,0)) AS 需求量
|
||||
FROM dbo.车间装配管理_装配执行_临时领料明细 t
|
||||
LEFT JOIN 组件订单 co ON t.组件流水号=co.组件流水号
|
||||
WHERE t.物料流水号 IS NOT NULL AND NOT (ISNULL(co.是否提交,0)=6 AND ISNULL(co.是否启用,0)=1)
|
||||
GROUP BY co.订单编号,t.组件流水号,t.物料流水号
|
||||
),
|
||||
已领明细 AS
|
||||
(
|
||||
SELECT co.订单编号,b.组件流水号,b.物料流水号,SUM(ISNULL(l.已领数量,0)) AS 已领数
|
||||
FROM dbo.车间装配管理_领料单明细 l
|
||||
INNER JOIN dbo.PDM_零件明细表_基本件 b ON l.基本件流水号=b.基本件流水号
|
||||
INNER JOIN 组件订单 co ON b.组件流水号=co.组件流水号
|
||||
WHERE NOT (ISNULL(co.是否提交,0)=6 AND ISNULL(co.是否启用,0)=1)
|
||||
GROUP BY co.订单编号,b.组件流水号,b.物料流水号
|
||||
UNION ALL
|
||||
SELECT co.订单编号,s.组件流水号,s.物料流水号,SUM(ISNULL(l.已领数量,0)) AS 已领数
|
||||
FROM dbo.车间装配管理_领料单明细 l
|
||||
INNER JOIN dbo.PDM_零件明细表_标准件和外购件 s ON l.标准件和外购件流水号=s.标准件和外购件流水号
|
||||
INNER JOIN 组件订单 co ON s.组件流水号=co.组件流水号
|
||||
WHERE NOT (ISNULL(co.是否提交,0)=6 AND ISNULL(co.是否启用,0)=1)
|
||||
GROUP BY co.订单编号,s.组件流水号,s.物料流水号
|
||||
UNION ALL
|
||||
SELECT co.订单编号,l.组件流水号,l.物料流水号,SUM(ISNULL(l.已领数量,0)) AS 已领数
|
||||
FROM dbo.车间装配管理_领料单明细 l
|
||||
LEFT JOIN 组件订单 co ON l.组件流水号=co.组件流水号
|
||||
WHERE l.物料流水号 IS NOT NULL AND ISNULL(l.物料流水号,0)<>0 AND ISNULL(l.基本件流水号,0)=0 AND ISNULL(l.标准件和外购件流水号,0)=0 AND NOT (ISNULL(co.是否提交,0)=6 AND ISNULL(co.是否启用,0)=1)
|
||||
GROUP BY co.订单编号,l.组件流水号,l.物料流水号
|
||||
),
|
||||
已领汇总 AS
|
||||
(
|
||||
SELECT 订单编号,组件流水号,物料流水号,SUM(已领数) AS 已领数
|
||||
FROM 已领明细 GROUP BY 订单编号,组件流水号,物料流水号
|
||||
),
|
||||
明细 AS
|
||||
(
|
||||
SELECT d.订单编号,d.组件流水号,d.物料流水号,
|
||||
CASE WHEN d.需求量>ISNULL(l.已领数,0) THEN d.需求量-ISNULL(l.已领数,0) ELSE 0 END AS 最终需求量
|
||||
FROM 需求明细 d
|
||||
LEFT JOIN 已领汇总 l ON d.物料流水号=l.物料流水号 AND d.组件流水号=l.组件流水号 AND ISNULL(d.订单编号,'')=ISNULL(l.订单编号,'')
|
||||
),
|
||||
明细汇总 AS
|
||||
(
|
||||
SELECT 物料流水号,SUM(最终需求量) AS 明细最终需求量
|
||||
FROM 明细 WHERE 最终需求量<>0 GROUP BY 物料流水号
|
||||
)
|
||||
SELECT COUNT(*) AS 明细与需求视图不一致物料数,SUM(ISNULL(m.明细最终需求量,0)) AS 明细合计,SUM(ISNULL(v.需求量,0)) AS 视图合计,SUM(ISNULL(m.明细最终需求量,0)-ISNULL(v.需求量,0)) AS 差异合计
|
||||
FROM 明细汇总 m FULL JOIN dbo.物料管理_需求量_视图 v ON m.物料流水号=v.物料流水号
|
||||
WHERE ISNULL(m.明细最终需求量,0)<>ISNULL(v.需求量,0);
|
||||
Reference in New Issue
Block a user