--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**********/