вторник, 4 декабря 2007 г.

Запросы для получения ряда чисел

В некоторых случаях бывает необходимо получить последовательность чисел от N до M (в последнее время что-то уж очень часто возникает такая необходимость :). Дабы самому не забыть решил перечислить известные мне способы:

-- Самый простой
Select Rownum
From User_Objects
Where Rownum <= 25;

-- Кол-во единичек в CUBE - степень двойки
Select Rownum
From (Select 1 From Dual Group By Cube(1, 1, 1, 1, 1))
Where Rownum <= 25;

-- С использованием иерархичного запроса
Select Level
From Dual
Connect By Level <= 25;

-- Только для 10 версии и выше
Select y from dual
model
dimension by (1 as x) measures (1 as y)
rules iterate (25) (y[iteration_number + 1] = iteration_number + 1);


Есть есть еще какие-либо решения - будет интересно посмотреть...

3 комментария:

Анонимный комментирует...

А почему бы не использовать Oracle Sequence, он вроде как раз для получения ряда чисел и предназначен?

Timoshinin Evgeny комментирует...

А почему бы не использовать Oracle Sequence, он вроде как раз для получения ряда чисел и предназначен?
Основное назначение Oracle Sequence - это, все таки, использование в авто-инкрементальных полях таблицы.

В запросе, используя только Oracle Sequence, получить последовательность чисел вряд ли получится, так как надо откуда-то запрашивать данные, то есть таблица.

Edward комментирует...

самый простой способ не указан: pivot table