Files
GateDge2023_ljy/02.珠海市供水有限公司/ZHSW/STK_MisDelivery/sql/更新其他出库单参考单价_V2.sql

176 lines
7.1 KiB
MySQL
Raw Normal View History

2024-04-10 10:39:04 +08:00
SELECT
rowSet2.[1] AS 'FMATERIALID'
,rowSet2.[2] AS 'inRow'
,rowSet2.[3] AS 'FSTOCKID'
,rowSet2.[4] AS 'FDate'
,rowSet2.[5] AS 'FSBILLID'
,rowSet2.[6] AS 'FSID'
,rowSet2.[7] AS 'FSTABLENAME'
INTO #TMP_DATA
FROM (SELECT 1 ID,CAST('<v>'+ REPLACE('100123,0,0,2024-04-07 00:00:00,0,0,',';','</v><v>') + '</v>' AS XML) AS xmlVal
) AS valSet
OUTER APPLY (
SELECT ROW_NUMBER() OVER (ORDER BY valSet.ID) RN
,CAST('<v>'+ REPLACE(T.C.value('.','varchar(100)'),',','</v><v>') + '</v>' AS XML) xmlVal
FROM valSet.xmlVal.nodes('/v') AS T(C)
) rowSet
OUTER APPLY (
SELECT TT2.* FROM (
SELECT T.C.value('.','varchar(100)') AS xmlVal
,ROW_NUMBER() OVER (ORDER BY rowSet.RN) RowNo
FROM rowSet.xmlVal.nodes('/v') AS T(C)
) TT
PIVOT (MAX(TT.xmlVal) FOR TT.RowNo IN ([1],[2],[3],[4],[5],[6],[7])) TT2
) rowSet2
/***********************************ȡ<EFBFBD><EFBFBD><EFBFBD>ε<EFBFBD><EFBFBD><EFBFBD>start*****************************************/
SELECT t0e_lk.FMATERIALID
,(CASE t0e_lk.FSTABLENAME
WHEN 'T_STK_MISDELIVERYENTRY' THEN t1.FPRICE --<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˻<EFBFBD><EFBFBD><EFBFBD>-<EFBFBD>ɱ<EFBFBD><EFBFBD><EFBFBD>
WHEN 'T_STK_INSTOCKENTRY' THEN t2.FPRICE --<EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> -<EFBFBD><EFBFBD><EFBFBD>ۣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˰<EFBFBD><EFBFBD>
WHEN 'T_STK_STKTRANSFERINENTRY1' THEN t3.FPRICE --<EFBFBD>ֲ<EFBFBD>ʽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD> -<EFBFBD>ο<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
ELSE 0
END) AS 'newReferPrice'
,(CASE t0e_lk.FSTABLENAME
WHEN 'T_STK_MISDELIVERYENTRY' THEN 'Դ_<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ⵥ:'+ t1.FBILLNO
WHEN 'T_STK_INSTOCKENTRY' THEN 'Դ_<EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ⵥ:'+ t2.FBILLNO
WHEN 'T_STK_STKTRANSFERINENTRY1' THEN (CASE t3.FPRICE WHEN 0 THEN '' ELSE 'Դ_<EFBFBD>ֲ<EFBFBD>ʽ<EFBFBD><EFBFBD><EFBFBD>뵥:'+ t3.FBILLNO END)
ELSE ''
END) AS 'newExplain'
,t0e_lk.FSTABLENAME
,t0e_lk.FDATE
,t0e_lk.FSTOCKID
,t0e_lk.inRow
,t4.FMASTERID
,t4i.FINVPTYID
,t4i.FISAFFECTCOST
,t4i.FISENABLE
INTO #TMP_HAS_PARENT_MIS
FROM #TMP_DATA t0e_lk
OUTER APPLY (
SELECT t1.FBILLNO,t1e.FPRICE
FROM T_STK_MISDELIVERY t1 --<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
INNER JOIN T_STK_MISDELIVERYENTRY t1e on t1.FID = t1e.FID
AND (t1e.FID = t0e_lk.FSBILLID AND t1e.FENTRYID = t0e_lk.FSID AND t0e_lk.FSTABLENAME = 'T_STK_MISDELIVERYENTRY')
) t1
OUTER APPLY (
SELECT t2.FBILLNO,t2e.FPRICE
FROM T_STK_INSTOCK t2 --<EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
INNER JOIN T_STK_INSTOCKENTRY_F t2e on t2.FID = t2e.FID
AND (t2e.FID = t0e_lk.FSBILLID AND t2e.FENTRYID = t0e_lk.FSID AND t0e_lk.FSTABLENAME = 'T_STK_INSTOCKENTRY')
) t2
OUTER APPLY (
SELECT t3.FBILLNO,(CASE LTRIM(RTRIM(t3e.FReferPrice)) WHEN '' THEN 0 ELSE CONVERT(decimal(23,6) ,t3e.FReferPrice) END) AS FPRICE
FROM T_STK_STKTRANSFERIN t3 --<EFBFBD>ֲ<EFBFBD>ʽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
INNER JOIN T_STK_STKTRANSFERINENTRY t3e on t3.FID = t3e.FID
AND (t3e.FID = t0e_lk.FSBILLID AND t3e.FENTRYID = t0e_lk.FSID AND t0e_lk.FSTABLENAME = 'T_STK_STKTRANSFERINENTRY1')
) t3
INNER JOIN T_BD_MATERIAL t4 on t4.FMATERIALID = t0e.FMATERIALID
INNER JOIN T_BD_MATERIALINVPTY t4i on t0e.FMATERIALID = t4i.FMATERIALID AND t4i.FINVPTYID = 10001 --AND t4i.FISENABLE = 1
WHERE 1 = 1
/***********************************ȡ<EFBFBD><EFBFBD><EFBFBD>ε<EFBFBD><EFBFBD><EFBFBD>end********************************************/
/***********************************<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>շ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>start***************************************************/
SELECT t0.FDATE
--,t0.FBILLNO,t0.FID,t0.FENTRYID
,t0.FMASTERID,t0.FMATERIALID,t0.FSTOCKID,t0.FINVPTYID,t0.FISAFFECTCOST,t0.FISENABLE
,(CASE t0.newExplain WHEN ''
THEN (CASE WHEN t0.FISAFFECTCOST = 1 AND t0.FISENABLE = 1 THEN t2.FDATE ELSE t3.FDATE END)
ELSE t0.newExplain
END)AS 'newExplain'
,(CASE t0.newExplain WHEN '' THEN
(CASE WHEN t0.FISAFFECTCOST = 1 AND t0.FISENABLE = 1
THEN t2.PRICE
ELSE (CASE WHEN t3.FQTY <> 0 THEN ROUND(t3.FAMOUNT/t3.FQTY,6) ELSE 0 END)
END)
ELSE t0.newReferPrice
END) AS 'newReferPrice'
INTO #TMP_<50><5F><EFBFBD><EFBFBD><E6B5A5>_END_LIST
FROM #TMP_HAS_PARENT_MIS t0
OUTER APPLY(
SELECT TOP 1 tt1.FDATE
,(CASE WHEN tt1.FQTY <> 0 THEN ROUND(tt1.FAMOUNT/tt1.FQTY,6) ELSE 0 END) AS PRICE
FROM V_MATERIAL_INIVSTOCKDIMENSION tt1
WHERE 1 = 1
AND t0.FMASTERID = tt1.FMASTERID
AND t0.FSTOCKID = tt1.FSTOCKID
AND tt1.DateNum <= t0.DateNum
AND (t0.FISENABLE = 1 AND t0.FISAFFECTCOST = 1)
AND t0.FSTABLENAME IS NULL
AND tt1.FQTY > 0
ORDER BY tt1.FYEAR DESC,tt1.FPERIOD DESC
) t2
OUTER APPLY (
SELECT TOP 1 tt2.FYEAR,tt2.FPERIOD
,CONVERT(nvarchar(10),FYEAR) + '.' + CONVERT(nvarchar(10),FPERIOD) AS FDATE
,SUM(tt2.FAMOUNT) AS FAMOUNT,SUM(tt2.FQTY) AS FQTY
FROM V_MATERIAL_INIVSTOCKDIMENSION tt2
WHERE 1 = 1
AND t0.FMASTERID = tt2.FMASTERID
AND tt2.DateNum <= t0.DateNum
AND (t0.FISENABLE = 0 OR t0.FISAFFECTCOST = 0)
AND t0.FSTABLENAME IS NULL
GROUP BY tt2.FYEAR,tt2.FPERIOD
HAVING SUM(tt2.FQTY) > 0
ORDER BY tt2.FYEAR DESC,tt2.FPERIOD DESC
) t3
/*****************************************<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>շ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>end***********************************************/
/*****************************************<EFBFBD><EFBFBD>ͬ<EFBFBD><EFBFBD><EFBFBD>ۡ<EFBFBD><EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ⵥstart**********************************************/
SELECT t0.FDATE
--,t0.FBILLNO,t0.FID,t0.FENTRYID
,t0.FMASTERID,t0.FMATERIALID,t0.FSTOCKID,t0.FINVPTYID,t0.FISAFFECTCOST
,t0.inRow
,ISNULL((CASE WHEN t0.newReferPrice = 0
THEN (CASE WHEN t0.FISAFFECTCOST = 1 AND t0.FISENABLE = 1
THEN (CASE WHEN t1.FMATERIALID IS NOT NULL THEN t1.FPRICE ELSE t2.FPRICE END)
ELSE (CASE WHEN t2.FMATERIALID IS NOT NULL THEN t2.FPRICE ELSE t1.FPRICE END)
END)
ELSE t0.newReferPrice
END),0) AS 'newReferPrice'
,ISNULL((CASE WHEN t0.newReferPrice = 0
THEN (CASE WHEN t0.FISAFFECTCOST = 1 AND t0.FISENABLE = 1
THEN (CASE WHEN t1.FMATERIALID IS NOT NULL THEN 'ȡ<EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD>:'+t1.FBILLNO ELSE 'ȡ<EFBFBD><EFBFBD>ͬ<EFBFBD><EFBFBD>,<2C><>ͬ<EFBFBD><CDAC>Ϊ:'+t2.FBILLNO END)
ELSE (CASE WHEN t2.FMATERIALID IS NOT NULL THEN 'ȡ<EFBFBD><EFBFBD>ͬ<EFBFBD><EFBFBD>,<2C><>ͬ<EFBFBD><CDAC>Ϊ:'+t2.FBILLNO ELSE 'ȡ<EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD>:'+t1.FBILLNO END)
END)
ELSE t0.newExplain
END),'û<EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD>۸<EFBFBD>') AS 'newExplain'
--INTO #TMP_<50><5F><EFBFBD><EFBFBD><E6B5A5>_END_LIST_1
FROM #TMP_<50><5F><EFBFBD><EFBFBD><E6B5A5>_END_LIST t0
OUTER APPLY (
SELECT TOP 1 tt0.FBILLNO,tt0e.FMATERIALID,tt0e.FSTOCKID
,tt0e_f.FPRICE,tt0e_f.FCOSTPRICE
FROM T_STK_INSTOCK tt0 --<EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
INNER JOIN T_STK_INSTOCKENTRY tt0e on tt0.FID = tt0e.FID
INNER JOIN T_STK_INSTOCKENTRY_F tt0e_f on tt0e.FENTRYID = tt0e_f.FENTRYID
WHERE
tt0.FDOCUMENTSTATUS = 'C'
AND tt0.FCANCELSTATUS = 'A'
AND tt0.FSTOCKORGID = 101542
AND (tt0e_f.FPRICE != 0 OR tt0e_f.FCOSTPRICE <> 0)
AND t0.FMATERIALID = tt0e.FMATERIALID AND tt0e.FSTOCKID = t0.FSTOCKID
AND DATEDIFF(DAY,tt0.FDATE, t0.FDATE) > -1
ORDER BY tt0.FDATE DESC
) t1
LEFT JOIN T_BD_MATERIAL tt1 on tt1.FMASTERID = t0.FMASTERID AND tt1.FDOCUMENTSTATUS = 'C' AND tt1.FFORBIDSTATUS = 'A'
CROSS APPLY (
SELECT
tt0e.F_QNV_BASE1 AS FMATERIALID
--,tt0e.F_QNV_DECIMAL3 AS FPRICE--<EFBFBD>ۺϵ<EFBFBD><EFBFBD><EFBFBD>
--,tt0e.F_QNV_DECIMAL1 AS FPRICE--<EFBFBD><EFBFBD>˰<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
,tt0e.F_QNV_PRICE AS FPRICE--<EFBFBD><EFBFBD><EFBFBD><EFBFBD>˰<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
,tt0.F_QNV_TEXT2 AS FBILLNO
FROM QNV_t_Cust_Entry100003 tt0 --<EFBFBD><EFBFBD>Ӧ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ⱥ<EFBFBD>ͬ
INNER JOIN QNV_t_Cust_Entry100004 tt0e on tt0.FID = tt0e.FID AND tt1.FMATERIALID = tt0e.F_QNV_BASE1
WHERE 1 = 1
AND tt0.FDOCUMENTSTATUS = 'C'
ORDER BY F_QNV_DATE2 DESC
) t2
/*****************************************<EFBFBD><EFBFBD>ͬ<EFBFBD><EFBFBD><EFBFBD>ۡ<EFBFBD><EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ⵥend**********************************************/
DROP TABLE #TMP_DATA
DROP TABLE #TMP_<50><5F><EFBFBD><EFBFBD><E6B5A5>
DROP TABLE #TMP_HAS_PARENT_MIS
--DROP TABLE #TMP_NOT_PARENT_MIS
DROP TABLE #TMP_<50><5F><EFBFBD><EFBFBD><E6B5A5>_END_LIST
--DROP TABLE #TMP_<50><5F><EFBFBD><EFBFBD><E6B5A5>_END_LIST_1