비연속적인 데이터 추출에 관해 질문드립니다. 0 2 2,496

by zbra [SQL Query] oracle 11g [2018.05.31 18:01:49]


안녕하세요. 

시스템 유지보수중 사고를 쳐서 오류 데이터를 조회해야하는데 조언말씀좀 구하고자 글올리게 되었습니다.

 

테이블의 특정칼럼에 연속적인데이터 값이 들어옵니다

A1100000

A1100001

A1100002

...

A1100010 (A11000011 데이터없음)

A1100012

A1100013

A1100014

...

A1100101 (임의의 첫자리값은 입력시간에 상관없이 바뀔 수 있음)

X2100001

X2100002

...

X2100018

X2100019 (X21000020 데이터없음)

X2100021

...

A1100102

...

 

각 값들은 키값으로 유일하며 앞자리의 알파벳은 임의의 조건에 따라 생성됩니다.

SEQ값이 1씩 증가되지만, 중간에 비는 데이터가 생겨버렸습니다.

비어있는 이 데이터들을 찾아야하는데,

제 내공으로는 어려움이있어 선배님들께 조언을 여쭙습니다.

 

by 마농 [2018.05.31 18:17:14]
WITH t AS
(
SELECT 'A1100000' cd FROM dual
UNION ALL SELECT 'A1100001' FROM dual
UNION ALL SELECT 'A1100002' FROM dual
UNION ALL SELECT 'A1100010' FROM dual
UNION ALL SELECT 'A1100012' FROM dual
UNION ALL SELECT 'A1100013' FROM dual
UNION ALL SELECT 'A1100014' FROM dual
UNION ALL SELECT 'A1100101' FROM dual
UNION ALL SELECT 'X2100001' FROM dual
UNION ALL SELECT 'X2100002' FROM dual
UNION ALL SELECT 'X2100018' FROM dual
UNION ALL SELECT 'X2100019' FROM dual
UNION ALL SELECT 'X2100021' FROM dual
)
SELECT *
  FROM (SELECT cd
             , LAG(cd) OVER(PARTITION BY SUBSTR(cd, 1, 1) ORDER BY cd) before_cd
          FROM t
        )
 WHERE SUBSTR(cd, 2) - SUBSTR(before_cd, 2) != 1
;

 


by zbra [2018.05.31 18:27:51]

마농님 정말감사합니다!!

데이터가 생각보다 많이나와 큰일이네요 ㅠㅠ

잘익혀서 사용하겠습니다 정말감사드립니다

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