Files
GateDge2023_ljy/02.珠海市供水有限公司/ZHSW/STK_MisDelivery/sql/获取上游单据成本价作为参考单价.sql
PastSaid b2419eec9c 2
2024-04-10 10:39:04 +08:00

125 lines
5.7 KiB
SQL

--v1.0 --最终
SELECT t0.FBILLNO,t0e.FID,t0e.FENTRYID
,(CASE t0e_lk.FSTABLENAME
WHEN 'T_STK_MISDELIVERYENTRY' THEN t1e.FPRICE --其他出库(退货)-成本价
WHEN 'T_STK_INSTOCKENTRY' THEN t2e.FPRICE --采购入库 -单价(不含税)
WHEN 'T_STK_STKTRANSFERINENTRY1' THEN (CASE LTRIM(RTRIM(t3e.FReferPrice)) WHEN '' THEN 0 ELSE CONVERT(decimal(23,2) ,t3e.FReferPrice) END) --分步式调入 -参考单价
ELSE 0
END) AS newReferPrice
,t0e.FReferPrice
,t0e.FReferAmount
,(CASE t0e_lk.FSTABLENAME
WHEN 'T_STK_MISDELIVERYENTRY' THEN t1.FBILLNO
WHEN 'T_STK_INSTOCKENTRY' THEN t2.FBILLNO
WHEN 'T_STK_STKTRANSFERINENTRY1' THEN t3.FBILLNO
ELSE ''
END) AS '上游单据'
,t0e_lk.FSTABLENAME
FROM T_STK_MISDELIVERY t0
INNER JOIN T_STK_MISDELIVERYENTRY t0e on t0.FID = t0e.FID
INNER JOIN T_STK_MISDELIVERYENTRY_LK t0e_lk on t0e.FENTRYID = t0e_lk.FENTRYID
LEFT JOIN T_STK_MISDELIVERYENTRY t1e
on (t1e.FID = t0e_lk.FSBILLID AND t1e.FENTRYID = t0e_lk.FSID AND t0e_lk.FSTABLENAME = 'T_STK_MISDELIVERYENTRY') --其他出库(退货)
INNER JOIN T_STK_MISDELIVERY t1 on t0e_lk.FSBILLID = t1.FID
LEFT JOIN T_STK_INSTOCKENTRY_F t2e
on (t2e.FID = t0e_lk.FSBILLID AND t2e.FENTRYID = t0e_lk.FSID AND t0e_lk.FSTABLENAME = 'T_STK_INSTOCKENTRY') --采购入库
INNER JOIN T_STK_INSTOCK t2 on t0e_lk.FSBILLID = t2.FID
LEFT JOIN T_STK_STKTRANSFERINENTRY t3e
on (t3e.FID = t0e_lk.FSBILLID AND t3e.FENTRYID = t0e_lk.FSID AND t0e_lk.FSTABLENAME = 'T_STK_STKTRANSFERINENTRY1') --分步式调入
INNER JOIN T_STK_STKTRANSFERIN t3 on t0e_lk.FSBILLID = t3.FID
WHERE t0.FSTOCKORGID = 101542
AND t0e_lk.FSTABLENAME IN ('T_STK_STKTRANSFERINENTRY1','T_STK_INSTOCKENTRY' ,'T_STK_MISDELIVERYENTRY')
--v2.0
SELECT t0.FBILLNO,t0e.FID,t0e.FENTRYID
,(CASE
WHEN t1.LinkId IS NOT NULL THEN t1.FPRICE --其他出库(退货)-成本价
WHEN t2.LinkId IS NOT NULL THEN t2.FPRICE --采购入库 -单价(不含税)
WHEN t3.LinkId IS NOT NULL THEN t3.FPRICE --分步式调入 -参考单价
ELSE 0
END) AS newReferPrice
,t0e.FReferPrice
,t0e.FReferAmount
,(CASE WHEN t1.LinkId is not null THEN t1.FBILLNO
WHEN t2.LinkId is not null THEN t2.FBILLNO
WHEN t3.LinkId is not null THEN t3.FBILLNO
ELSE ''
END) AS '上游单据'
FROM T_STK_MISDELIVERY t0
INNER JOIN T_STK_MISDELIVERYENTRY t0e on t0.FID = t0e.FID
INNER JOIN T_STK_MISDELIVERYENTRY_LK t0e_lk on t0e_lk.FENTRYID = t0e.FENTRYID
LEFT JOIN (
SELECT t1.FBILLNO,t1e.FPRICE,t0e_lk.FENTRYID AS LinkId,t0e_lk.FSTABLENAME
FROM T_STK_MISDELIVERY t1 --其他出库(退货)
INNER JOIN T_STK_MISDELIVERYENTRY t1e on t1.FID = t1e.FID
INNER JOIN T_STK_MISDELIVERYENTRY_LK t0e_lk on t1e.FID = t0e_lk.FSBILLID AND t1e.FENTRYID = t0e_lk.FSID AND t0e_lk.FSTABLENAME = 'T_STK_MISDELIVERYENTRY'
) t1 on t1.LinkId = t0e.FENTRYID
LEFT JOIN (
SELECT t2.FBILLNO,t2e.FPRICE,t0e_lk.FENTRYID AS LinkId,t0e_lk.FSTABLENAME
FROM T_STK_INSTOCK t2 --采购入库
INNER JOIN T_STK_INSTOCKENTRY_F t2e on t2e.FID = t2.FID
INNER JOIN T_STK_MISDELIVERYENTRY_LK t0e_lk on t2e.FID = t0e_lk.FSBILLID AND t2e.FENTRYID = t0e_lk.FSID AND t0e_lk.FSTABLENAME = 'T_STK_INSTOCKENTRY'
) t2 on t2.LinkId = t0e.FENTRYID
LEFT JOIN (
SELECT t3.FBILLNO
,(CASE LTRIM(RTRIM(t3e.FReferPrice)) WHEN '' THEN 0 ELSE CONVERT(decimal(23,2) ,t3e.FReferPrice) END) AS 'FPRICE'
,t0e_lk.FENTRYID AS LinkId
,t0e_lk.FSTABLENAME
FROM T_STK_STKTRANSFERIN t3 --分步式调入
INNER JOIN T_STK_STKTRANSFERINENTRY t3e on t3.FID = t3e.FID
INNER JOIN T_STK_MISDELIVERYENTRY_LK t0e_lk on t3e.FID = t0e_lk.FSBILLID AND t3e.FENTRYID = t0e_lk.FSID AND t0e_lk.FSTABLENAME = 'T_STK_STKTRANSFERINENTRY1'
) t3 on t3.LinkId = t0e.FENTRYID
WHERE t0.FSTOCKORGID = 101542
--v3.0
SELECT t0.FBILLNO,t0e.FID,t0e.FENTRYID
,t1e.FPRICE AS newReferPrice
,t0e.FReferPrice
,t0e.FReferAmount
,t0e_lk.FSTABLENAME
,t1.FBILLNO
FROM T_STK_MISDELIVERY t0
INNER JOIN T_STK_MISDELIVERYENTRY t0e on t0.FID = t0e.FID
INNER JOIN T_STK_MISDELIVERYENTRY_LK t0e_lk on t0e.FENTRYID = t0e_lk.FENTRYID AND t0e_lk.FSTABLENAME = 'T_STK_MISDELIVERYENTRY'
INNER JOIN T_STK_MISDELIVERYENTRY t1e
on (t1e.FID = t0e_lk.FSBILLID AND t1e.FENTRYID = t0e_lk.FSID) --其他出库(退货)
INNER JOIN T_STK_MISDELIVERY t1 on t0e_lk.FSBILLID = t1.FID
WHERE t0.FSTOCKORGID = 101542
UNION ALL
SELECT t0.FBILLNO,t0e.FID,t0e.FENTRYID
,t1e.FPRICE AS newReferPrice
,t0e.FReferPrice
,t0e.FReferAmount
,t0e_lk.FSTABLENAME
,t1.FBILLNO
FROM T_STK_MISDELIVERY t0
INNER JOIN T_STK_MISDELIVERYENTRY t0e on t0.FID = t0e.FID
INNER JOIN T_STK_MISDELIVERYENTRY_LK t0e_lk on t0e.FENTRYID = t0e_lk.FENTRYID AND t0e_lk.FSTABLENAME = 'T_STK_INSTOCKENTRY'
INNER JOIN T_STK_INSTOCKENTRY_F t1e
on (t1e.FID = t0e_lk.FSBILLID AND t1e.FENTRYID = t0e_lk.FSID) --其他出库(退货)
INNER JOIN T_STK_INSTOCK t1 on t0e_lk.FSBILLID = t1.FID
WHERE t0.FSTOCKORGID = 101542
UNION ALL
SELECT t0.FBILLNO,t0e.FID,t0e.FENTRYID
,(CASE LTRIM(RTRIM(t1e.FReferPrice)) WHEN '' THEN 0 ELSE CONVERT(decimal(23,2) ,t1e.FReferPrice) END) AS newReferPrice
,t0e.FReferPrice
,t0e.FReferAmount
,t0e_lk.FSTABLENAME
,t1.FBILLNO
FROM T_STK_MISDELIVERY t0
INNER JOIN T_STK_MISDELIVERYENTRY t0e on t0.FID = t0e.FID
INNER JOIN T_STK_MISDELIVERYENTRY_LK t0e_lk on t0e.FENTRYID = t0e_lk.FENTRYID AND t0e_lk.FSTABLENAME = 'T_STK_STKTRANSFERINENTRY1'
INNER JOIN T_STK_STKTRANSFERINENTRY t1e
on (t1e.FID = t0e_lk.FSBILLID AND t1e.FENTRYID = t0e_lk.FSID) --其他出库(退货)
INNER JOIN T_STK_STKTRANSFERIN t1 on t0e_lk.FSBILLID = t1.FID
WHERE t0.FSTOCKORGID = 101542
/***********物料维度关联查询start**********/
--SELECT t0.FNUMBER,t0.FMATERIALID,t0i.FINVPTYID
--FROM T_BD_MATERIAL t0
-- INNER JOIN T_BD_MATERIALINVPTY t0i
-- on t0.FMATERIALID = t0i.FMATERIALID
-- AND t0i.FINVPTYID = 10001
-- AND t0i.FISAFFECTCOST = 1
--WHERE t0.FDOCUMENTSTATUS = 'C' AND t0.FFORBIDSTATUS = 'A'
/***********物料维度关联查询end**********/