[질문] 오라클에서 시퀀스값 비교를 해야하는데요.. 0 3 2,106

by 냉동닭 [SQL Query] SQL SELECT SEQ SEQUENCE [2020.10.12 15:44:17]


오라클DB에서 데이터를 확인해야하는데요..

 

확인해야하는데이터는 1부터 1억까지의 시퀀스 중 빈 시퀀스를 찾는 것입니다.

 

현재 A테이블에 현재 1억번까지의 시퀀스가 담겨있지만, 그 사이의 빈 시퀀스를 찾아내려는 작업을 어떻게 해야할지 모르겠네요..

 

A테이블을 비교하기 위한 1~1억까지의 온전한 B테이블을 만들고 싶은데, 엑셀로 1억까지 숫자를 만들기는 어렵고..

 

혹시 다른 손쉬운 방법이 있는지 답변해주시면 고맙겠습니다.

 

감사합니다.

 

by pajama [2020.10.12 16:20:44]

connect by로 연속 숫자 테이블을 만들어서 비교하는 방식으로 해봤습니다.

with tmp as (
select 1 data from dual
union all select 2 from dual
),
t as (
select level data from dual connect by level <= 10
)
select data from t where data not in (select data from tmp)

 


by 마농 [2020.10.13 17:57:37]
WITH t AS
(
SELECT 1 no FROM dual
UNION ALL SELECT  2 FROM dual
UNION ALL SELECT  4 FROM dual
UNION ALL SELECT  8 FROM dual
UNION ALL SELECT  9 FROM dual
)
SELECT *
  FROM (SELECT LAG(no, 1, 0) OVER(ORDER BY no) + 1 s_no
             , no - 1 e_no
          FROM t
        )
 WHERE s_no <= e_no
;

 


by 신이만든지기 [2020.10.16 14:45:50]
SELECT SEQ
  FROM (
               SELECT LEVEL SEQ
                 FROM DUAL
           CONNECT BY LEVEL <= 100000000
       ) A
 WHERE NOT EXISTS
           (SELECT 1
              FROM YOUR_SEQ_TABLE
             WHERE SEQ = A.SEQ);

NOT EXISTS 방식으로도 가능합니다.

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