Files
GateDge2023_ljy/SQLQuery1.sql
PastSaid 5e2781182d a
2024-03-04 16:50:20 +08:00

168 lines
6.7 KiB
SQL

SELECT
t0.FID --땐데id
,t0.FBILLNO
,t2.FID 'FORECAST_ID'
,t2e.FENTRYID 'FORECASTENTRY_ID'
,t2.FBILLNO 'F_FORECASTNUMBER'
,t2e.FSEQ 'F_LINENUMBER'
,t2e.FCUSTID 'F_CUSTOMERNAME'
,t2e.FMATERIALID 'F_MATERIALCODE' --渡꿎데膠죕id
,t2e.F_SOURCE_ORDER_LINE_NUMBER --饋簡땐데契뵀
,t2e.F_SOURCE_ORDER_NUMBER --饋簡땐데데뵀#
,t0.F_REMARK
INTO #TEMP_PLANORDER_ID_LIST
FROM T_PLN_PLANORDER t0
INNER JOIN T_PLN_RESERVELINKENTRY t1e ON t1e.FINTSUPPLYID = t0.FID
INNER JOIN T_PLN_RESERVELINK t1 ON t1.FID = t1e.FID
INNER JOIN T_PLN_FORECASTENTRY t2e ON t2e.FENTRYID = t1.FSRCENTRYID
INNER JOIN T_PLN_FORECAST t2 on t2.fid = t2e.FID
WHERE 1=1
--AND t0.F_FORECASTNUMBER = ''
--AND t0_b.FDEMANDTYPE = 2
AND CONVERT(nvarchar(100),t0.FCREATEDATE,23) = '2024-01-18'
--GROUP BY
-- t0.FID
CREATE INDEX #TEMP_PLANORDER_ID_LIST_INDEX_FID ON #TEMP_PLANORDER_ID_LIST(FID);
SELECT
t0.FID --땐데id
,t0.FBILLNO
,t0.FORECAST_ID
,t0.FORECASTENTRY_ID
,t0.F_FORECASTNUMBER
,t0.F_LINENUMBER
,t0.F_CUSTOMERNAME
,t0.F_MATERIALCODE --渡꿎데膠죕id
,t0.F_SOURCE_ORDER_LINE_NUMBER --饋簡땐데契뵀
,t0.F_SOURCE_ORDER_NUMBER --饋簡땐데데뵀#
,t0.F_REMARK
,t3.TOTAL
INTO #TEMP_PLANORDER_RESERVELINK
FROM #TEMP_PLANORDER_ID_LIST t0
INNER JOIN (SELECT FID,COUNT(1) TOTAL FROM #TEMP_PLANORDER_ID_LIST GROUP BY FID ) t3 on t3.FID = t0.FID --AND t3.total = 1
WHERE 1=1
--AND t0.F_FORECASTNUMBER = ''
ALTER TABLE #TEMP_PLANORDER_RESERVELINK ADD F_DESCRIPTION varchar(255);
CREATE INDEX #TEMP_PLANORDER_RESERVELINK_INDEX ON #TEMP_PLANORDER_RESERVELINK(FID);
UPDATE t0
SET t0.F_FORECASTNUMBER = tt.F_FORECASTNUMBER
,t0.F_LINENUMBER = tt.F_LINENUMBER
,t0.F_CUSTOMERNAME = tt.F_CUSTOMERNAME
,t0.F_MATERIALCODE = tt.F_MATERIALCODE
,t0.F_REMARK = ISNULL(t1e_l.FDESCRIPTION,'')
FROM T_PLN_PLANORDER t0
INNER JOIN #TEMP_PLANORDER_RESERVELINK tt on t0.FID = tt.FID AND tt.TOTAL = 1
LEFT JOIN T_PLN_FORECASTENTRY_L t1e_l on t1e_l.FENTRYID = tt.FORECASTENTRY_ID AND t1e_l.FLOCALEID = 2052
UPDATE t0
SET t0_l.F_DESCRIPTION = t1_l.FDESCRIPTION
FROM T_PLN_PLANORDER_L t0_l
INNER JOIN #TEMP_PLANORDER_RESERVELINK tt on t0.FID = tt.FID AND tt.TOTAL = 1
INNER JOIN T_PLN_FORECAST_L t1_l on tt.FORECAST_ID = t1_l.FID AND t1_l.FLOCALEID = 2052
SELECT
t0.FID --땐데id
,t0.FBILLNO
,t0.FORECAST_ID
,t0.FORECASTENTRY_ID
,t0.F_FORECASTNUMBER
,DENSE_RANK() over(partition BY t0.FID order by t0.FORECAST_ID) 'FORECASTNUMBER_SEQ'
,t0.F_LINENUMBER
,ROW_NUMBER() over(partition BY t0.FID,t0.FORECAST_ID order by t0.F_LINENUMBER) 'LINENUMBER_SEQ'
,t0.F_CUSTOMERNAME
,t0.F_MATERIALCODE --渡꿎데膠죕id
,t0.F_SOURCE_ORDER_LINE_NUMBER --饋簡땐데契뵀
,t0.F_SOURCE_ORDER_NUMBER --饋簡땐데데뵀#
--,t0.F_REMARK
--,ISNULL(t1_l.FDESCRIPTION,'') AS F_DESCRIPTION
,t1_l.FDESCRIPTION F_DESCRIPTION
--,ISNULL(t1e_l.FDESCRIPTION,'') AS F_REMARK --깊竟구鬧
,t1e_l.FDESCRIPTION F_REMARK
,t0.TOTAL
,DENSE_RANK() over(partition BY t0.FID order by t0.F_MATERIALCODE) 'DENSE_RANK_NUM'
INTO #TEMP_PLANORDER_RESERVELINK2
FROM
#TEMP_PLANORDER_RESERVELINK t0
LEFT JOIN T_PLN_FORECAST_L t1_l on t0.FORECAST_ID = t1_l.FID AND t1_l.FLOCALEID = 2052
LEFT JOIN T_PLN_FORECASTENTRY_L t1e_l on t1e_l.FENTRYID = t0.FORECASTENTRY_ID AND t1e_l.FLOCALEID = 2052
WHERE 1 = 1
AND TOTAL > 1
ORDER BY FID
CREATE INDEX #TEMP_PLANORDER_RESERVELINK2_INDEX ON #TEMP_PLANORDER_RESERVELINK2(FID);
UPDATE t0 SET t0.F_MATERIALCODE = 0,t0.F_CUSTOMERNAME = 0
FROM #TEMP_PLANORDER_RESERVELINK2 t0,(SELECT FID FROM #TEMP_PLANORDER_RESERVELINK2 WHERE DENSE_RANK_NUM = 2) t1 WHERE t0.FID = t1.FID
SELECT
t0.FID
,t0.FBILLNO
,t0.FORECAST_ID
,t0.F_FORECASTNUMBER
,t0.F_DESCRIPTION
,t0.F_MATERIALCODE
,t0.F_CUSTOMERNAME
,ISNULL(stuff((select ','+ CONVERT(nvarchar(100), tt.F_LINENUMBER) from #TEMP_PLANORDER_RESERVELINK2 tt where tt.FID=t0.FID and tt.FORECAST_ID = t0.FORECAST_ID AND tt.F_MATERIALCODE = t0.F_MATERIALCODE for xml path('')),1,1,''),'') 'F_LINENUMBER'
,ISNULL(stuff((select ';'+ tt.F_REMARK from #TEMP_PLANORDER_RESERVELINK2 tt where tt.FID=t0.FID and tt.FORECAST_ID = t0.FORECAST_ID AND tt.F_MATERIALCODE = t0.F_MATERIALCODE for xml path('')),1,1,''),'') 'F_REMARK'
,ISNULL(stuff((select distinct ','+ CONVERT(nvarchar(100), tt.F_SOURCE_ORDER_NUMBER) from #TEMP_PLANORDER_RESERVELINK2 tt where tt.FID=t0.FID and tt.FORECAST_ID = t0.FORECAST_ID for xml path('')),1,1,''),'') 'F_SOURCE_ORDER_NUMBER'
,ISNULL(stuff((select distinct ','+ CONVERT(nvarchar(100), tt.F_SOURCE_ORDER_LINE_NUMBER) from #TEMP_PLANORDER_RESERVELINK2 tt where tt.FID=t0.FID and tt.FORECAST_ID = t0.FORECAST_ID for xml path('')),1,1,''),'') 'F_SOURCE_ORDER_LINE_NUMBER'
INTO #TEMP
FROM #TEMP_PLANORDER_RESERVELINK2 t0
GROUP BY
t0.FID
,t0.FBILLNO
,t0.FORECAST_ID
,t0.F_FORECASTNUMBER
,t0.F_DESCRIPTION
,t0.F_MATERIALCODE
,t0.F_CUSTOMERNAME
CREATE INDEX #TEMP_INDEX ON #TEMP(FID);
SELECT
t0.FID
,t0.FBILLNO
,t0.F_MATERIALCODE
,t0.F_CUSTOMERNAME
,ISNULL(stuff((select ';'+ CONVERT(nvarchar(100), tt.F_LINENUMBER) from #TEMP tt where tt.FID=t0.FID for xml path('')),1,1,''),'') 'F_LINENUMBER'
,ISNULL(stuff((select ';'+ CONVERT(nvarchar(100), tt.F_FORECASTNUMBER) from #TEMP tt where tt.FID=t0.FID for xml path('')),1,1,''),'') 'F_FORECASTNUMBER'
,ISNULL(stuff((select ';'+ tt.F_REMARK from #TEMP tt where tt.FID=t0.FID for xml path('')),1,1,''),'') 'F_REMARK'
,ISNULL(stuff((select ';'+ tt.F_DESCRIPTION from #TEMP tt where tt.FID = t0.FID for xml path('')),1,1,''),'') 'F_DESCRIPTION'
,ISNULL(stuff((select distinct ';'+CONVERT(nvarchar(100), tt.F_SOURCE_ORDER_NUMBER) from #TEMP_PLANORDER_RESERVELINK2 tt where tt.FID=t0.FID for xml path('')),1,1,''),'') 'F_SOURCE_ORDER_NUMBER'
,ISNULL(stuff((select distinct ';'+CONVERT(nvarchar(100), tt.F_SOURCE_ORDER_LINE_NUMBER) from #TEMP_PLANORDER_RESERVELINK2 tt where tt.FID=t0.FID for xml path('')),1,1,''),'') 'F_SOURCE_ORDER_LINE_NUMBER'
INTO #TEMP2
FROM #TEMP t0
--WHERE t0.fbillno ='MRP01679279'
GROUP BY
t0.FID
,t0.FBILLNO
,t0.F_MATERIALCODE
,t0.F_CUSTOMERNAME
CREATE INDEX #TEMP2_INDEX ON #TEMP2(FID);
UPDATE t0
SET t0.F_FORECASTNUMBER = tt.F_FORECASTNUMBER
,t0.F_LINENUMBER = tt.F_LINENUMBER
,t0.F_CUSTOMERNAME = tt.F_CUSTOMERNAME
,t0.F_MATERIALCODE = tt.F_MATERIALCODE
,t0.F_REMARK = ISNULL(t1e_l.FDESCRIPTION,'')
FROM T_PLN_PLANORDER t0
INNER JOIN #TEMP2 tt on t0.FID = tt.FID --AND tt.TOTAL = 1
LEFT JOIN T_PLN_FORECASTENTRY_L t1e_l on t1e_l.FENTRYID = tt.FORECASTENTRY_ID AND t1e_l.FLOCALEID = 2052
UPDATE t0
SET t0_l.F_DESCRIPTION = t1_l.FDESCRIPTION
FROM T_PLN_PLANORDER_L t0_l
INNER JOIN #TEMP2 tt on t0.FID = tt.FID --AND tt.TOTAL = 1
INNER JOIN T_PLN_FORECAST_L t1_l on tt.FORECAST_ID = t1_l.FID AND t1_l.FLOCALEID = 2052
SELECT * FROM #TEMP2
DROP TABLE #TEMP
DROP TABLE #TEMP2
DROP TABLE #TEMP_PLANORDER_ID_LIST
DROP TABLE #TEMP_PLANORDER_RESERVELINK
DROP TABLE #TEMP_PLANORDER_RESERVELINK2