powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Составить запрос. "Развернуть" несколько целочисленных диапазонов.
19 сообщений из 19, страница 1 из 1
Составить запрос. "Развернуть" несколько целочисленных диапазонов.
    #39675586
Подскажите пожалуйста, как следует составить запрос (в Oracle sql не силён)

Дана таблица T_RANGE и два целочисленных столбца A и B
Каждая строка такой таблицы означает диапазон (или интервал) целых чисел.
Например, такие данные:
A | B
______
10 | 12
23 | 25
51 | 55

Нужно одним запросом "развернуть" каждый диапазон так, чтобы получился один столбец - все целые числа из указанных диапазонов.
Для данного примера результат был бы

10
11
12
23
24
25
51
52
53
54
55
...
Рейтинг: 0 / 0
Составить запрос. "Развернуть" несколько целочисленных диапазонов.
    #39675599
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Составить запрос. "Развернуть" несколько целочисленных диапазонов.
    #39675607
Фотография AmKad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
12c
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
with s (a,b) as (
select 10, 12 from dual union all
select 23, 25 from dual union all
select 51, 55 from dual)
select *
from s,
lateral(select a+level-1 value from dual connect by level <= b-a+1) lt;

         A          B      VALUE
---------- ---------- ----------
        10         12         10
        10         12         11
        10         12         12
        23         25         23
        23         25         24
        23         25         25
        51         55         51
        51         55         52
        51         55         53
        51         55         54
        51         55         55

11 rows selected.
...
Рейтинг: 0 / 0
Составить запрос. "Развернуть" несколько целочисленных диапазонов.
    #39675608
AmKad, sorry, нужно без UNION
так как эти диапазоны - величины переменные, т.е. сегодня одни значения, завтра другие.
...
Рейтинг: 0 / 0
Составить запрос. "Развернуть" несколько целочисленных диапазонов.
    #39675614
merch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я вам не Димон.,

а ты хорош! поставил этого выскочку на место.
...
Рейтинг: 0 / 0
Составить запрос. "Развернуть" несколько целочисленных диапазонов.
    #39675616
tru55
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я вам не Димон.AmKad, sorry, нужно без UNION
Это всего лишь пример данных, чтобы не городить таблицу.
...
Рейтинг: 0 / 0
Составить запрос. "Развернуть" несколько целочисленных диапазонов.
    #39675618
AmKad, я может вас не так понял, тут просто union вы написали чтобы имитировать данные моей таблицы.
Мне нужно для Oracle 11g
...
Рейтинг: 0 / 0
Составить запрос. "Развернуть" несколько целочисленных диапазонов.
    #39675619
MaximaXXL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я вам не Димон.AmKad, sorry, нужно без UNION
так как эти диапазоны - величины переменные, т.е. сегодня одни значения, завтра другие.

Ой порадовали к обеду

читайте как:

Код: plsql
1.
2.
3.
select *
from T_RANGE,
lateral(select a+level-1 value from dual connect by level <= b-a+1) lt;
...
Рейтинг: 0 / 0
Составить запрос. "Развернуть" несколько целочисленных диапазонов.
    #39675621
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AmKad12c
Код: plsql
1.
2.
3.
select *
from s,
lateral(select a+level-1 value from dual connect by level <= b-a+1) lt;

11g:
Код: plsql
1.
2.
select xmlcast(column_value as int)
from s, xmltable(a || ' to ' || b);
...
Рейтинг: 0 / 0
Составить запрос. "Развернуть" несколько целочисленных диапазонов.
    #39675625
MaximaXXL
читайте как:

Код: plsql
1.
2.
3.
select *
from T_RANGE,
lateral(select a+level-1 value from dual connect by level <= b-a+1) lt;



[Error] Execution (5: 8): ORA-00933: неверное завершение SQL-предложения
:-(
Oracle 11g
...
Рейтинг: 0 / 0
Составить запрос. "Развернуть" несколько целочисленных диапазонов.
    #39675626
Фотография AmKad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
merchЯ вам не Димон.,

а ты хорош! поставил этого выскочку на место.Видимо сегодня не мой день. Простите
...
Рейтинг: 0 / 0
Составить запрос. "Развернуть" несколько целочисленных диапазонов.
    #39675673
Форумчане! Вопрос актуален, пока что ни один из предложенных вариантов не подошёл.
...
Рейтинг: 0 / 0
Составить запрос. "Развернуть" несколько целочисленных диапазонов.
    #39675683
MaximaXXL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я вам не Димон.,

21580996 Это решение то чем Вам не подходит?
...
Рейтинг: 0 / 0
Составить запрос. "Развернуть" несколько целочисленных диапазонов.
    #39675684
ElicAmKad12c
Код: plsql
1.
2.
3.
select *
from s,
lateral(select a+level-1 value from dual connect by level <= b-a+1) lt;


11g:
Код: plsql
1.
2.
select xmlcast(column_value as int)
from s, xmltable(a || ' to ' || b);


а нет, сорри ещё раз
вот это сработало!
Код: plsql
1.
2.
select xmlcast(column_value as int)
from t_range, xmltable(a || ' to ' || b);
...
Рейтинг: 0 / 0
Составить запрос. "Развернуть" несколько целочисленных диапазонов.
    #39675685
Elic, спасибо!!!
...
Рейтинг: 0 / 0
Составить запрос. "Развернуть" несколько целочисленных диапазонов.
    #39675696
Ещё 1 вариант подсказал один добрый человек

Код: plsql
1.
2.
3.
select a + level - 1 num
  from (select rownum rn, a, b from t_range) 
  connect by a + level -1 <= b and prior rn = rn and prior sys_guid() is not null
...
Рейтинг: 0 / 0
Составить запрос. "Развернуть" несколько целочисленных диапазонов.
    #39675697
Мир не без добрых людей. Ещё один добрый самаритянин подсказал:

Код: plsql
1.
2.
3.
4.
5.
6.
WITH cte ( a, b ) AS (
  SELECT A, B FROM t_range
UNION ALL
  SELECT A + 1, B FROM cte WHERE A < B
)
SELECT a FROM cte order by a
...
Рейтинг: 0 / 0
Составить запрос. "Развернуть" несколько целочисленных диапазонов.
    #39675733
MaximaXXL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ох не часто соединяются такие посты от одного человека
Я вам не Димон.AmKad, sorry, нужно без UNION
так как эти диапазоны - величины переменные, т.е. сегодня одни значения, завтра другие.
Я вам не Димон.Elic, спасибо!!!
...
Рейтинг: 0 / 0
Составить запрос. "Развернуть" несколько целочисленных диапазонов.
    #39675737
AmKad , MaximaXXL , tru55  - спасибо вам за помощь и участие!
Спасибо всем неравнодушным форумчанам! Вы мне очень помогли.
...
Рейтинг: 0 / 0
19 сообщений из 19, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Составить запрос. "Развернуть" несколько целочисленных диапазонов.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]