안녕하세요. 고수님의 조언을 부탁드립니다.
REQST_MASTR 테이블에 JOB_REQST_NO(신청번호 : PK) 필드에서 들어가 있는 데이터 중에 신청번호 이전 번호가 존재하는지 확인 하는 쿼리를 짜고 싶은데....
데이터가 많아서 그렇지 속도가 안 나오네요..
필드 시작 2자리는 구분코드(영문) 숫자 방식이며, 이고 구분코드는 틀리수 있습니다 (예 : SP1000000000, SE1000000001)
그런데 SP로 시작하는 신청번호 중 현재 등록된 신청번호 하나 작은 신청번호가 존재하는 확인 쿼리를 어떻게 해야 할지~~~
예로 신청번호가 SP1000004589 경우 SP1000004588 존재하는 확인하고 있으면 해당코드를 없으면 X로 표시하는 쿼리를 구성하고 싶은데.... 잘 안되네요....
Select A.* ,(SELECT JOB_REQST_NO FROM REQST_MASTR WHERE SUBSTR(JOB_REQST_NO, 0, 2) = 'SP' AND SUBSTR(JOB_REQST_NO, 3, 13) = A.NUMS) AS t1 From ( SELECT JOB_REQST_NO, SUBSTR(A.JOB_REQST_NO, 3, 13) - 1 AS NUMS FROM REQST_MASTR A WHERE SUBSTR(JOB_REQST_NO, 0, 2) = 'SP' order by JOB_REQST_NO DESC ) A
WITH reqst_mastr AS ( SELECT 'SE1000004581' job_reqst_no FROM dual UNION ALL SELECT 'SE1000004582' FROM dual UNION ALL SELECT 'SE1000004589' FROM dual UNION ALL SELECT 'SP1000004581' FROM dual UNION ALL SELECT 'SP1000004582' FROM dual UNION ALL SELECT 'SP1000004588' FROM dual UNION ALL SELECT 'SP1000004589' FROM dual ) SELECT job_reqst_no , DECODE(SUBSTR(job_reqst_no, 3) - SUBSTR(job_reqst_no_1, 3), 1, job_reqst_no_1, 'X') x FROM (SELECT job_reqst_no , LAG(job_reqst_no) OVER(ORDER BY job_reqst_no) job_reqst_no_1 FROM reqst_mastr ) ;