Oracle / SQL - выберите указанный диапазон последовательных записей - PullRequest
0 голосов
/ 01 февраля 2011

Я пытаюсь выбрать подмножество записей, 5000 до 10000 из объединения.В прошлом я получал подобные запросы, но они были немного менее сложными.Вот запрос, который я пытаюсь использовать, и если я удаляю ссылки на rownum / rnum (и, следовательно, внешний выбор), я получаю все свои записи, как и ожидалось, поэтому я знаю, что логика хороша.

SELECT      * 
    FROM    ( 
            SELECT  unique cl.riid_, 
                    rownum as rnum 
            FROM    <table 1> cl, <table 3> mil 
            WHERE   cl.opt = 0 AND 
                    (cl.st_ != 'QT' OR cl.st_ IS NULL) AND 
                    cl.hh = 0 AND 
                    cl._ID_ = mil._ID_ AND 
                    mil.TYPE in (0, 1, 2, 3, 4) AND 
                    EXISTS 
                        ( SELECT    'x' 
                            FROM    <table 2> sub 
                            WHERE   cl.ea_ = lower(sub.ea_) AND 
                                    sub.status = 0 AND 
                                    lower(sub.subscription) = 'partner' 
                        ) AND 
                    rownum <= 10000 
            ) 
    where   rnum > 5000

Поэтому, когда я запускаю этот запрос, я получаю это сообщение от нашей системы (это не интерфейс Oracle cli, а скорее веб-слой, который существует поверх него, поэтому, пожалуйста, не обращайте внимания на ошибку msgесли это необычно)

'Ошибка: ресурс, выбранный для просмотра, недействителен.Возможно, вам придется заново создать или исправить объект перед просмотром его данных. '

Ресурс будет результатом запроса.

Так кто-нибудь имеет представление о том, что происходит, или лучший способ сделать это?

Спасибо!

1 Ответ

2 голосов
/ 01 февраля 2011

Я полагаю, что вы ищете что-то подобное в Oracle:

select * 
  from ( select a.*, rownum rnum
           from ( YOUR_QUERY_GOES_HERE -- including the order by ) a
          where rownum <= MAX_ROWS )
 where rnum >= MIN_ROWS
/

Хорошая дискуссия от Ask Tom: здесь

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