2012-02-15 11 views
0

숫자가 들어있는 테이블이 1 ~ 1000 범위에 있지만 고유 한 값을 갖지만 Oracle SQL을 사용하여 테이블에서 1 ~ 1000 범위에 누락 된 숫자를 식별해야합니다 ,오라클 SQL의 범위는 1 ~ 1000

1,3,4,5,6,8,9,10

결과 2,7

사람이 스크립트에 스크립트 또는 URL에 도움이 수 없습니다.?

+2

11, 12 등은 어떨까요? 그들이 빠진 것도 아닌가? –

+0

카운트가 아직 높지는 않지만 최대 값 (SheetNo)을 사용할 수 있습니다. 마이너스에 대해서는 – icecurtain

답변

2

당신은 사용할 수 있습니다

select level from dual 
connect by level<=1000 
minus 
select mycolumn from mytable 

편집 :

숫자는 하드 코드 된 1000없이 순서에서 누락되는 찾으려면 :

select level from dual 
connect by level < (select max(mycolumn) from mytable) 
minus 
select mycolumn from mytable 
+0

+1입니다. 좋은 아이디어 –

+0

이것은 내가 감사 할 필요가있는 것입니다. – icecurtain

0

시도 :

select a.check_number 
from (select level check_number from dual connect by level <= 1000) a 
where not exists 
(select null from myTable t where a.check_number = t.lookup_number) 
0
with numbers as (
    select level as i 
    from dual 
    connect by level <= (select max(some_number) from your_table) 
) 
select nr.i as missing 
from numbers nr 
    left join your_table yt on yt.some_number = nr.i 
where yt.some_number is null;