해결 감사합니다 0 3 673

by 안뇽 [Oracle 기초] [2018.07.27 12:56:28]


ㅏㅏㅏㅣㅎㄹ튱륭륭ㄹ

by 우리집아찌 [2018.07.27 13:40:32]

전날에 데이터가 존재하는것만 찾으면 되나요?

데이터 샘플 좀 주세요.

 


by 우리집아찌 [2018.07.27 15:34:02]

정확히 어떤걸 구하시는 이해가 안되네요..

단순히 주말을 뺀 전날과 다음날 데이터를 원하시는건가요?

주말이 아니라 공휴일 전체는 체크 안하시는지요?

그리고 샘플은 원본의 데이터를 올려주세요.

 


by 우리집아찌 [2018.07.27 16:23:47]
 -- DATA_T 가 DL_MCSERPED_DEV 입니다.   
 WITH T (DT)  AS (
  SELECT TO_DATE('20180618','YYYYMMDD')  + LEVEL -1 FROM DUAL CONNECT BY LEVEL <= SYSDATE -  TO_DATE('20180618','YYYYMMDD') + 1 
 ) , DATE_T (CREATE_DATE , CS_ITEM_PATH_FILE ) AS (
  SELECT TO_DATE('20180620','YYYYMMDD') , 'A'  FROM DUAL UNION ALL
  SELECT TO_DATE('20180620','YYYYMMDD') , 'A' FROM DUAL UNION ALL
  SELECT TO_DATE('20180621','YYYYMMDD') , 'A' FROM DUAL UNION ALL
  SELECT TO_DATE('20180621','YYYYMMDD') , 'B' FROM DUAL UNION ALL
  SELECT TO_DATE('20180622','YYYYMMDD') , 'A' FROM DUAL UNION ALL
  SELECT TO_DATE('20180623','YYYYMMDD') , 'A' FROM DUAL UNION ALL
  SELECT TO_DATE('20180624','YYYYMMDD') , 'A' FROM DUAL UNION ALL
  SELECT TO_DATE('20180625','YYYYMMDD') , 'A' FROM DUAL UNION ALL
  SELECT TO_DATE('20180626','YYYYMMDD') , 'A' FROM DUAL UNION ALL
  SELECT TO_DATE('20180627','YYYYMMDD') , 'A' FROM DUAL   
  )
 
 
 
SELECT A.DT , A.BEF_DT , B.CS_ITEM_PATH_FILE
  FROM (SELECT DT
             , LAG(DT,1) OVER(ORDER BY DT ) BEF_DT
             , ROW_NUMBER() OVER(ORDER BY DT ) RN
          FROM T
         WHERE TO_CHAR(DT,'D') IN ( '2' , '3' ,'4' , '5' ,'6' )   
       ) A 
     , DATE_T B
     , DATE_T C
  WHERE A.DT               = B.CREATE_DATE
    AND A.BEF_DT           = C.CREATE_DATE
    AND B.CREATE_DATE      >= TO_DATE('20180618' , 'YYYYMMDD')
    AND C.CREATE_DATE      >= TO_DATE('20180618' , 'YYYYMMDD')
    AND B.CS_ITEM_PATH_FILE = C.CS_ITEM_PATH_FILE
  GROUP BY A.DT , A.BEF_DT , B.CS_ITEM_PATH_FILE
  HAVING COUNT(*) > 1 
 

 

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입