получить список чисел между двумя столбцами - PullRequest
2 голосов
/ 19 октября 2010

У меня есть таблица1 (startnumber, endnumber) в oracle;

Теперь мне нужно выбрать все числа, лежащие между startnumber и endnumber из данных table1

например,

    table1
   startnumber      endnumber
     10                15
    18                 22
    34                 50

Now I need the result set as:

10,11,12,13,14,15,18,19,20,21,22,34,35..... and so on

Как мне это сделать

1 Ответ

2 голосов
/ 19 октября 2010
SQL> ed
Wrote file afiedt.buf

  1  with t as (
  2    select 10 startnum, 15 endnum from dual
  3    union all
  4    select 18, 22 from dual
  5    union all
  6    select 34, 50 from dual
  7  )
  8  select lvl
  9    from (select level lvl
 10            from dual
 11         connect by level <= (select max(endnum) from t)) a
 12   where exists (select 1
 13                   from t
 14*                 where lvl between t.startnum and t.endnum)
SQL> /

       LVL
----------
        10
        11
        12
        13
        14
        15
        18
        19
        20
        21
        22
        34
        35
        36
        37
        38
        39
        40
        41
        42
        43
        44
        45
        46
        47
        48
        49
        50

28 rows selected.

Если младший начальный номер относительно велик по сравнению с максимальным конечным номером, можно изменить подзапрос CONNECT BY, чтобы генерировать числа от MIN (начальный номер) до MAX (конечный номер), а не от 1 до MAX (конечный номер), быть более эффективным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...