liangjunyu 14affa9131 1
2025-12-12 14:46:03 +08:00

70 lines
3.1 KiB
SQL

--DROP TABLE IF EXISTS #销售出库单采购入库
WITH # AS (
SELECT t0.FBILLNO AS '销售出库单'
,t0e.FENTRYID AS '销售出库单分录ID'
,t0e.FREALQTY AS '出库数量'
,SUM(t0e.FREALQTY) OVER (PARTITION BY t3e.FENTRYID) '合计出库数量'
,t1.FBILLNO AS '发货通知单'
,t1e.FENTRYID AS '发货通知单分录ID'
,t1e.FQTY AS '通知数量'
,t2.FBILLNO AS '销售订单'
,t2e.FENTRYID AS '销售订单分录ID'
,t2e.FQTY AS '订单数量'
,t3.FBILLNO AS '采购订单'
,t3.FDATE AS '采购日期'
,t3e.FSEQ AS '采购订单行号'
,t3e.FENTRYID AS '采购订单分录ID'
,t3e.FQTY AS '采购数量'
,ISNULL(t4.FACTRECEIVEQTY,0) AS '收料数量'
,ISNULL(t4.FREALQTY,0) '采购入库数量'
--,ISNULL(t4.收料单分录ID,'') '收料单分录ID'
--,ISNULL(t4.收料单分录入库数量,'') '收料单分录入库数量'
--INTO #销售出库单采购入库
FROM T_SAL_OUTSTOCK t0
INNER JOIN T_SAL_OUTSTOCKENTRY t0e on t0e.FID = t0.FID
INNER JOIN T_SAL_OUTSTOCKENTRY_LK t0e_lk on t0e.FENTRYID = t0e_lk.FENTRYID
AND t0e_lk.FSTABLENAME = 'T_SAL_DELIVERYNOTICEENTRY'
INNER JOIN T_SAL_DELIVERYNOTICE t1 on t1.FID = t0e_lk.FSBILLID
INNER JOIN T_SAL_DELIVERYNOTICEENTRY t1e on t1.FID = t1e.FID AND t0e_lk.FSBILLID = t1e.FID AND t0e_lk.FSID = t1e.FENTRYID
INNER JOIN T_SAL_DELIVERYNOTICEENTRY_LK t1e_lk on t1e.FENTRYID = t1e_lk.FENTRYID
AND t1e_lk.FSTABLENAME = 'T_SAL_ORDERENTRY'
INNER JOIN T_SAL_ORDER t2 on t2.FID = t1e_lk.FSBILLID
INNER JOIN T_SAL_ORDERENTRY t2e on t1e_lk.FSBILLID = t2e.FID AND t1e_lk.FSID = t2e.FENTRYID
INNER JOIN T_SAL_ORDERENTRY_LK t2e_lk on t2e.FENTRYID = t2e_lk.FENTRYID
AND t2e_lk.FSTABLENAME = 't_PUR_POOrderEntry'
INNER JOIN T_PUR_POORDER t3 on t2e_lk.FSBILLID = t3.FID
INNER JOIN T_PUR_POORDERENTRY t3e on t3.FID = t3e.FID AND t2e_lk.FSBILLID = t3e.FID AND t2e_lk.FSID = t3e.FENTRYID
AND t3e.FMRPCLOSESTATUS = 'A'
INNER JOIN T_PUR_POORDERENTRY_LK t3e_lk on t3e_lk.FENTRYID = t3e.FENTRYID
OUTER APPLY (
SELECT SUM(t4e.FACTRECEIVEQTY) 'FACTRECEIVEQTY',SUM(ISNULL(t5.FREALQTY,0)) 'FREALQTY'
--,STRING_AGG(t4e.FENTRYID,';') '收料单分录ID'
--,STRING_AGG(ISNULL(t5.FREALQTY,0),';') '收料单分录入库数量'
FROM T_PUR_RECEIVE t4
INNER JOIN T_PUR_RECEIVEENTRY t4e on t4e.FID = t4.FID
INNER JOIN T_PUR_RECEIVEENTRY_LK t4e_lk on t4e_lk.FENTRYID = t4e.FENTRYID
AND t4e_lk.FSTABLENAME = 'T_PUR_POORDERENTRY'
OUTER APPLY (
SELECT t5e_lk.FSID,SUM(t5e.FREALQTY) 'FREALQTY'
FROM T_STK_INSTOCK t5
INNER JOIN T_STK_INSTOCKENTRY t5e on t5.fID = t5e.FID
INNER JOIN T_STK_INSTOCKENTRY_LK t5e_lk on t5e_lk.FENTRYID = t5e.FENTRYID
AND t5e_lk.FSTABLENAME = 'T_PUR_RECEIVEENTRY'
WHERE t5e_lk.FSBILLID = t4e.FID AND t5e_lk.FSID = t4e.FENTRYID
GROUP BY t5e_lk.FSID
) t5
WHERE t3e.FENTRYID = t4e_lk.FSID AND t3e.FID = t4e_lk.FSBILLID
GROUP BY t4e_lk.FSID
) t4
WHERE t3.FCLOSESTATUS = 'A'
--AND t0e.FREALQTY != ISNULL(t4.FREALQTY,0)
--ORDER BY t3e.FID,t3e.FENTRYID
)
SELECT t0.*
FROM # t0
WHERE 1=1
--AND t0.采购入库数量 != t0.合计出库数量
--AND t0.采购入库数量 < t0.合计出库数量
--AND t0.采购入库数量 > t0.合计出库数量
AND t0.ID = 107059
--AND t0.采购入库数量 != t0.收料数量