Files
JY1.0/sql/库存查询_需求量与明细一致性排查.sql

144 lines
8.7 KiB
SQL

-- 库存查询需求量与需求量明细一致性排查;修改人: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);