2020. 2. 20. 11:06ㆍDevelopment/DataBase
/* =============================================================================
프로그램ID : dbo.UP_ECS_ECL_MDMAFCSubList_Q
업 무 명 : *** 데이터 조회
프로그램명 : *** 데이터 조회
최초작성일 : 2019.07.22
개 발 자 : 정동출
실 행 : [dbo].[UP_ECS_ECL_MDMAFCSubList_Q] 'HD4-1810-NW-454-01','1','PP0300F100'
============================================================================= */
-- 2020.01.14 정동출 TEST_PKG_NO(TABLE : TB_ECS_MDM_PI_ISO_TST_PACKAGE) 데이터 조회 변경(UP_ECS_BAT_MDM_PI_ISO_AM_DAILY_U 배치)
ALTER PROC [dbo].[UP_ECS_ECL_MDMAFCSubList_Q]
@AFC_ISO_NO varchar(100)
,@AFC_ISO_REV varchar(10)
,@DP_NAME varchar(50)
AS
BEGIN
IF OBJECT_ID('tempdb..#FILTB') IS NOT NULL
DROP TABLE #FILTB;
IF OBJECT_ID('tempdb..#SUB_TABLE') IS NOT NULL
DROP TABLE #SUB_TABLE;
SELECT A.LINE_LIST
, A.PART_NAME
, A.AFC_ISO_NO
, A.AFC_ISO_REV
, ISNULL(A.DP_NAME,'') AS DP_NAME
, ISNULL(A.CON_ISO_NO,'') AS CON_ISO_NO
, ISNULL(A.SPOOL_NO,'') AS SPOOL_NO
, ISNULL(A.TEST_PACKAGE,'') AS TEST_PKG_NO
, ISNULL(A.ITEM_CREATED_TIME,'') AS ITEM_CREATED_TIME
, CASE WHEN B.SCHD_DT IS NULL OR LEN(B.SCHD_DT)!=8 THEN ''
ELSE SUBSTRING(B.SCHD_DT,1,4)+'-'+SUBSTRING(B.SCHD_DT,5,2)+'-'+SUBSTRING(B.SCHD_DT,7,2) END AS DP_PLAN_DT
, CASE WHEN B.GB = 'P' THEN
CASE WHEN (SELECT COUNT(ACTL_DT) FROM [SWP_KPI].[dbo].[TB_PLM_KPI_DP1_AGGR]
WHERE GB = 'A' AND TOT_SER = 1
AND PROJ_NO = B.PROJ_NO
AND DP_ACTV = B.DP_ACTV) >= B.PLN_DWG_BYVR
THEN (SELECT CASE WHEN MAX(ACTL_DT) IS NULL OR LEN(MAX(ACTL_DT))!=8 THEN ''
ELSE SUBSTRING(MAX(ACTL_DT),1,4)+'-'+SUBSTRING(MAX(ACTL_DT),5,2)+'-'+SUBSTRING(MAX(ACTL_DT),7,2) END
FROM [SWP_KPI].[dbo].[TB_PLM_KPI_DP1_AGGR]
WHERE GB = 'A' AND TOT_SER = 1 AND PROJ_NO = B.PROJ_NO AND DP_ACTV = B.DP_ACTV)
ELSE '' END
ELSE
CASE WHEN B.ACTL_DT IS NULL OR LEN(B.ACTL_DT)!=8 THEN ''
ELSE SUBSTRING(B.ACTL_DT,1,4)+'-'+SUBSTRING(B.ACTL_DT,5,2)+'-'+SUBSTRING(B.ACTL_DT,7,2) END
END
AS DP_ACTION_DT
, CASE WHEN B.SCHD_DT IS NULL THEN NULL ELSE B.PLN_DWG_BYVR END AS DP_PLAN_CNT
, CASE WHEN B.SCHD_DT IS NULL THEN NULL ELSE
(SELECT COUNT(ACTL_DT)
FROM [SWP_KPI].[dbo].[TB_PLM_KPI_DP1_AGGR]
WHERE GB = 'A' AND TOT_SER = 1 AND PROJ_NO = B.PROJ_NO AND DP_ACTV = B.DP_ACTV)
END
AS DP_ACTION_CNT
,'Not found' AS CFILEYN
,'Not found' AS SFILEYN
,CONVERT(VARCHAR(100), ' ') AS CFILEOBJID
,CONVERT(VARCHAR(100), ' ') AS SFILEOBJID
,CONVERT(NVARCHAR(1000), ' ') AS CFILENAME
,CONVERT(NVARCHAR(1000), ' ') AS SFILENAME
INTO #SUB_TABLE
FROM
(
SELECT A.PROJ_NO
, A.LINE_LIST
, A.PART_NAME
, A.AFC_ISO_NO
, A.AFC_ISO_REV
, CASE WHEN B.CON_ISO_NO IS NULL THEN ''
ELSE 'T'+SUBSTRING(B.CON_ISO_NO,1,5)+@DP_NAME+'P1' END
AS DP_NAME
, B.CON_ISO_NO
, B.SPOOL_NO
, IFTB.SHI_PACKAGE AS TEST_PACKAGE
, B.ITEM_CREATED_TIME
FROM TB_ECS_MDM_PI_ISO_REV AS A
JOIN TB_ECS_MDM_PI_ISO_AM AS B
ON A.PART_NAME = B.ENG_MODEL_REF
LEFT JOIN TB_ECS_MDM_PI_ISO_TST_PACKAGE AS IFTB
ON B.CON_ISO_NO =IFTB.CON_ISO_NO
WHERE A.PROJ_NO = 'SN2235'
AND A.AFC_ISO_NO = @AFC_ISO_NO
AND A.AFC_ISO_REV = @AFC_ISO_REV
) AS A
LEFT OUTER JOIN [SWP_KPI].[dbo].[TB_PLM_KPI_DP1_AGGR] AS B
ON A.PROJ_NO = B.PROJ_NO
AND A.DP_NAME = B.DP_ACTV
AND B.GB = 'P'
IF EXISTS(SELECT * FROM #SUB_TABLE)
BEGIN
DECLARE @LINE_LIST varchar(100),
@PART_NAME varchar(256),
@AFC_ISO_NO_S varchar(100),
@AFC_ISO_REV_S varchar(10),
@DP_NAME_S varchar(200),
@CON_ISO_NO varchar(100),
@SPOOL_NO varchar(100),
@TEST_PACKAGE varchar(100),
@ITEM_CREATED_TIME varchar(100),
@DP_PLAN_DT varchar(100),
@DP_ACTION_DT varchar(100),
@DP_PLAN_CNT INT = NULL,
@DP_ACTION_CNT INT = NULL,
@CFILEYN CHAR(10),
@SFILEYN CHAR(10),
@CFILEOBJID varchar(100),
@SFILEOBJID varchar(100),
@CFILENAME nvarchar(1000),
@SFILENAME nvarchar(1000);
DECLARE @rownum INT
--FILE OBJ 호출 파라메터
DECLARE @PROJ_NO NVARCHAR(10)
DECLARE @OBJID_FILE nvarchar(100);
DECLARE @SQLString NVARCHAR(MAX);
DECLARE @ParmDefinition nvarchar(4000);
DECLARE @OBJ_ID varchar(30);
DECLARE @STRCONDITION NVARCHAR(100);
SET @rownum = 0;
DECLARE page_cursor CURSOR FOR
SELECT * FROM #SUB_TABLE;
OPEN page_cursor /* 커서를오픈한다 */
FETCH NEXT FROM page_cursor
INTO @LINE_LIST,
@PART_NAME,
@AFC_ISO_NO_S,
@AFC_ISO_REV_S,
@DP_NAME,
@CON_ISO_NO ,
@SPOOL_NO ,
@TEST_PACKAGE ,
@ITEM_CREATED_TIME,
@DP_PLAN_DT,
@DP_ACTION_DT,
@DP_PLAN_CNT,
@DP_ACTION_CNT,
@CFILEYN,
@SFILEYN,
@CFILEOBJID,
@SFILEOBJID,
@CFILENAME,
@SFILENAME;
WHILE @@FETCH_STATUS = 0
BEGIN
SET @rownum = @rownum + 1;
--생산 iso no. 파일 업데이트
IF(ISNULL(@CFILEYN,'Not found') = 'Not found')
BEGIN
SET @PROJ_NO='SN2235'
SET @STRCONDITION = CONCAT(RTRIM(LTRIM(@CON_ISO_NO)), '-DWG-R%');
IF OBJECT_ID('tempdb..#FILTB') IS NOT NULL
DROP TABLE #FILTB;
CREATE TABLE #FILTB
(
STM_DCMTM_ID varchar(100),
ATCH_FILE_NM nvarchar(MAX)
);
SET @SQLString = 'SELECT * FROM
OPENQUERY(ERPIF,''SELECT D.STM_DCMTM_ID, ((TRIM(D.STM_FILE_NM) || ''''.'''' ||TRIM(D.APPL))) AS ATCH_FILE_NM
FROM PLDTB_ISSUE_FILE_MAST IFM
,PLDTB_DWG_MAST DM
,PLJTB_PROJ_DP DP
,PLDTB_ISSUE_FILE D
WHERE 1=1
AND IFM.FIN_VER_YN = ''''Y''''
AND IFM.FIN_DW_NO = DM.DW_NO
AND DM.PROJ_NO = DP.PROJ_NO
AND DM.DP_ACTV = DP.DP_ACTV
AND (DP.CTL_KEY IN (''''DS04'''',''''DS05'''') OR (DP.CTL_KEY = ''''DS03'''' AND DP.DP_GB = ''''Y''''))
AND IFM.DOC_NO = D.DOC_NO
AND IFM.DOC_PART = D.DOC_PART
AND IFM.DOC_TP = D.DOC_TP
AND IFM.DOC_VER = D.DOC_VER
AND IFM.DWG_KND NOT IN (''''B1'''',''''B2'''')
AND IFM.FIN_DW_NO = D.DW_NO
AND DP.PROJ_NO = ''''' + @PROJ_NO +'''''
AND DP.DWG_KND NOT IN (SELECT CD FROM CMCTB_CDNM WHERE CD_CLF =''''PLJP49'''' AND DEL_YN = ''''N'''' AND CD2 = ''''F'''')
AND DP.DWG_KND NOT IN (''''S1'''',''''SS'''')
AND D.FILE_GB_CD NOT IN (''''B'''')
AND DP.DSN_SKL = ''''P1''''
AND D.STM_FILE_NM LIKE ''''' + @STRCONDITION +'''''
'')'
INSERT INTO #FILTB
EXECUTE sp_executesql @SQLString
IF(Exists(SELECT * FROM #FILTB))
BEGIN
UPDATE PTB
SET CFILEYN ='Open'
,CFILEOBJID = FILETB.STM_DCMTM_ID
,CFILENAME=CONVERT(VARCHAR(100),FILETB.ATCH_FILE_NM)
FROM #SUB_TABLE AS PTB
JOIN (SELECT @AFC_ISO_NO_S AS AFC_ISO_NO, @AFC_ISO_REV_S AS AFC_ISO_REV , @CON_ISO_NO AS CON_ISO_NO , SEL.STM_DCMTM_ID, SEL.ATCH_FILE_NM
FROM
(SELECT * FROM #FILTB) AS SEL
) AS FILETB
ON PTB.AFC_ISO_NO = FILETB.AFC_ISO_NO
AND PTB.AFC_ISO_REV = FILETB.AFC_ISO_REV
AND PTB.CON_ISO_NO = FILETB.CON_ISO_NO
END
END
--SPOOL no. 파일 업데이트
IF(ISNULL(@SFILEYN,'Not found') = 'Not found')
BEGIN
SET @PROJ_NO='SN2235'
SET @STRCONDITION = CONCAT(RTRIM(LTRIM(@SPOOL_NO)), '%');
IF OBJECT_ID('tempdb..#SFILTB') IS NOT NULL
DROP TABLE #SFILTB;
CREATE TABLE #SFILTB
(
STM_DCMTM_ID varchar(100),
ATCH_FILE_NM nvarchar(MAX)
);
SET @SQLString = 'SELECT * FROM
OPENQUERY(ERPIF,''SELECT D.STM_DCMTM_ID, ((TRIM(D.STM_FILE_NM) || ''''.'''' ||TRIM(D.APPL))) AS ATCH_FILE_NM
FROM PLDTB_ISSUE_FILE_MAST IFM
,PLDTB_DWG_MAST DM
,PLJTB_PROJ_DP DP
,PLDTB_ISSUE_FILE D
WHERE 1=1
AND IFM.FIN_VER_YN = ''''Y''''
AND IFM.FIN_DW_NO = DM.DW_NO
AND DM.PROJ_NO = DP.PROJ_NO
AND DM.DP_ACTV = DP.DP_ACTV
AND (DP.CTL_KEY IN (''''DS04'''',''''DS05'''') OR (DP.CTL_KEY = ''''DS03'''' AND DP.DP_GB = ''''Y''''))
AND IFM.DOC_NO = D.DOC_NO
AND IFM.DOC_PART = D.DOC_PART
AND IFM.DOC_TP = D.DOC_TP
AND IFM.DOC_VER = D.DOC_VER
AND IFM.DWG_KND NOT IN (''''B1'''',''''B2'''')
AND IFM.FIN_DW_NO = D.DW_NO
AND DP.PROJ_NO = ''''' + @PROJ_NO +'''''
AND DP.DWG_KND NOT IN (SELECT CD FROM CMCTB_CDNM WHERE CD_CLF =''''PLJP49'''' AND DEL_YN = ''''N'''' AND CD2 = ''''F'''')
AND DP.DWG_KND NOT IN (''''S1'''',''''SS'''')
AND D.FILE_GB_CD NOT IN (''''B'''')
AND DP.DSN_SKL = ''''P1''''
AND D.STM_FILE_NM LIKE ''''' + @STRCONDITION +'''''
'')'
INSERT INTO #SFILTB
EXECUTE sp_executesql @SQLString
IF(Exists(SELECT * FROM #SFILTB))
BEGIN
UPDATE PTB
SET SFILEYN ='Open'
,SFILEOBJID = FILETB.STM_DCMTM_ID
,SFILENAME=CONVERT(VARCHAR(100),FILETB.ATCH_FILE_NM)
FROM #SUB_TABLE AS PTB
JOIN (SELECT @AFC_ISO_NO_S AS AFC_ISO_NO, @AFC_ISO_REV_S AS AFC_ISO_REV , @SPOOL_NO AS SPOOL_NO , SEL.STM_DCMTM_ID, SEL.ATCH_FILE_NM
FROM
(SELECT * FROM #SFILTB) AS SEL
) AS FILETB
ON PTB.AFC_ISO_NO = FILETB.AFC_ISO_NO
AND PTB.AFC_ISO_REV = FILETB.AFC_ISO_REV
AND PTB.SPOOL_NO = FILETB.SPOOL_NO
END
END
FETCH NEXT FROM page_cursor
INTO @LINE_LIST,
@PART_NAME,
@AFC_ISO_NO_S,
@AFC_ISO_REV_S,
@DP_NAME_S,
@CON_ISO_NO ,
@SPOOL_NO ,
@TEST_PACKAGE ,
@ITEM_CREATED_TIME,
@DP_PLAN_DT,
@DP_ACTION_DT,
@DP_PLAN_CNT,
@DP_ACTION_CNT,
@CFILEYN,
@SFILEYN,
@CFILEOBJID,
@SFILEOBJID,
@CFILENAME,
@SFILENAME;
END
CLOSE page_cursor
DEALLOCATE page_cursor
SELECT * FROM #SUB_TABLE
END
ELSE
BEGIN
SELECT A.LINE_LIST
, CASE WHEN ISNULL(A.PART_NAME,'') = '' THEN ''
ELSE 'Not found on AM DB.' END AS PART_NAME
, A.AFC_ISO_NO
, A.AFC_ISO_REV
, ISNULL(A.DP_NAME,'') AS DP_NAME
, '' AS CON_ISO_NO
, ISNULL(A.SPOOL_NO,'') AS SPOOL_NO
, ISNULL(A.TEST_PACKAGE,'') AS TEST_PACKAGE
, ISNULL(A.ITEM_CREATED_TIME,'') AS ITEM_CREATED_TIME
, CASE WHEN B.SCHD_DT IS NULL OR LEN(B.SCHD_DT)!=8 THEN ''
ELSE SUBSTRING(B.SCHD_DT,1,4)+'-'+SUBSTRING(B.SCHD_DT,5,2)+'-'+SUBSTRING(B.SCHD_DT,7,2) END AS DP_PLAN_DT
, CASE WHEN B.GB = 'P' THEN
CASE WHEN (SELECT COUNT(ACTL_DT) FROM [SWP_KPI].[dbo].[TB_PLM_KPI_DP1_AGGR]
WHERE GB = 'A' AND TOT_SER = 1
AND PROJ_NO = B.PROJ_NO
AND DP_ACTV = B.DP_ACTV) >= B.PLN_DWG_BYVR
THEN (SELECT CASE WHEN MAX(ACTL_DT) IS NULL OR LEN(MAX(ACTL_DT))!=8 THEN ''
ELSE SUBSTRING(MAX(ACTL_DT),1,4)+'-'+SUBSTRING(MAX(ACTL_DT),5,2)+'-'+SUBSTRING(MAX(ACTL_DT),7,2) END
FROM [SWP_KPI].[dbo].[TB_PLM_KPI_DP1_AGGR]
WHERE GB = 'A' AND TOT_SER = 1 AND PROJ_NO = B.PROJ_NO AND DP_ACTV = B.DP_ACTV)
ELSE '' END
ELSE
CASE WHEN B.ACTL_DT IS NULL OR LEN(B.ACTL_DT)!=8 THEN ''
ELSE SUBSTRING(B.ACTL_DT,1,4)+'-'+SUBSTRING(B.ACTL_DT,5,2)+'-'+SUBSTRING(B.ACTL_DT,7,2) END
END
AS DP_ACTION_DT
, CASE WHEN B.SCHD_DT IS NULL THEN NULL ELSE B.PLN_DWG_BYVR END AS DP_PLAN_CNT
, CASE WHEN B.SCHD_DT IS NULL THEN NULL ELSE
(SELECT COUNT(ACTL_DT)
FROM [SWP_KPI].[dbo].[TB_PLM_KPI_DP1_AGGR]
WHERE GB = 'A' AND TOT_SER = 1 AND PROJ_NO = B.PROJ_NO AND DP_ACTV = B.DP_ACTV)
END
AS DP_ACTION_CNT
,'Not found' AS CFILEYN
,'Not found' AS SFILEYN
,CONVERT(VARCHAR(100), '') AS CFILEOBJID
,CONVERT(VARCHAR(100), '') AS SFILEOBJID
,CONVERT(NVARCHAR(1000), '') AS CFILENAME
,CONVERT(NVARCHAR(1000), '') AS SFILENAME
FROM
(
SELECT A.LINE_LIST
, A.PART_NAME
, A.AFC_ISO_NO
, A.AFC_ISO_REV
, CASE WHEN B.DELEGATE_BLOCK1 IS NULL THEN ''
ELSE 'T'+B.DELEGATE_BLOCK1+@DP_NAME+'P1' END
AS DP_NAME
, '' AS CON_ISO_NO
, '' AS SPOOL_NO
, '' AS TEST_PACKAGE
, '' AS ITEM_CREATED_TIME
FROM TB_ECS_MDM_PI_ISO_REV AS A
LEFT OUTER JOIN TB_ECS_MDM_PI_ISO_CD AS B
ON A.ISSUED_BY = B.ISSUED_BY
AND A.DESIGN_AREA LIKE (REPLACE(B.DESIGN_AREA,'*','%'))
WHERE A.AFC_ISO_NO = @AFC_ISO_NO
AND A.AFC_ISO_REV = @AFC_ISO_REV
) AS A
LEFT OUTER JOIN [SWP_KPI].[dbo].[TB_PLM_KPI_DP1_AGGR] AS B
ON B.PROJ_NO = 'SN2235'
AND A.DP_NAME = B.DP_ACTV
AND B.GB = 'P'
END
IF OBJECT_ID('tempdb..#FILTB') IS NOT NULL
DROP TABLE #FILTB;
IF OBJECT_ID('tempdb..#SFILTB') IS NOT NULL
DROP TABLE #SFILTB;
IF OBJECT_ID('tempdb..#SUB_TABLE') IS NOT NULL
DROP TABLE #SUB_TABLE;
END
--참조 사이트
MSSQL OPENQUERY 사용하기 - ③ (UNION / JOIN / 조건 UPDATE)
- MSSQL OPENQUERY 이전포스트 "MSSQL OPENQUERY 사용하기 - ② 포스트 바로...
blog.naver.com
'Development > DataBase' 카테고리의 다른 글
[MYSQL] DateTime 처리 (0) | 2021.02.15 |
---|---|
[MSSQL] 숫자 올림,반올림,내림 처리 (0) | 2020.03.19 |
[MSSQL] mssql 변경 내용을 저장할 수 없습니다. 변경 내용을 적용하려면 다음 테이블을 삭제하고... 오류해결 (0) | 2020.03.19 |