Использование подготовленного оператора без функций ROW_NUMBER() и OVER() в Db2

Допустим, у меня есть таблица T_SWA. Это моя подготовленная выписка.

Select version 
From (Select id, version, creator, 
       created_date ROW_NUMBER() OVER(order by created_date) cnt 
    From T_SWA 
    Where cnt=3 and id=35); 

Мне нужно выбрать 3-ю последнюю версию из таблицы T_SWA. Кто-нибудь может предложить замену этому запросу без использования функций ROW_NUM() и OVER()?


person vijayakumarpsg587    schedule 30.09.2010    source источник
comment
В чем проблема с использованием ROW_NUMBER для достижения результата? Что вы пытаетесь сделать по-другому?   -  person Ian Bjorhovde    schedule 30.09.2010
comment
@Ian: клиенты нашей компании не позволяют нам использовать его с функциями OVER() и ROW_NUMBER(). Вот почему мы ищем альтернативные решения. Так у тебя есть??   -  person vijayakumarpsg587    schedule 30.09.2010


Ответы (1)


Сначала возьмите три самых последних, а затем из этих трех выберите первый.

select id, version, creator, created_date 
from (
    select id, version, creator, created_date 
        from T_SWA
        where id = 35
        order by created_date desc
        fetch first 3 rows only
)
order by created_date
fetch first 1 row only;
person boes    schedule 30.09.2010
comment
Когда я попытался найти n-ю запись, произошло несоответствие типа данных, возможно, в том месте, где используется ключевое слово fetch. Можно ли использовать ключевое слово Fetch для поиска n-й записи?? - person vijayakumarpsg587; 30.09.2010
comment
Нет. См. stackoverflow.com/questions/3751884/, а затем второй комментарий. - person boes; 30.09.2010
comment
ПРЕДУПРЕЖДЕНИЕ?: Я не согласен. Возможно, есть некоторое недопонимание того, что означает запрошенная «третья последняя версия». Допустим, есть версия на каждый день сентября 2010 года. В таблице будет 30 записей с 1 по 30 сентября. «Третья последняя версия» будет версией от 28 сентября. Внутренний выбор, упорядоченный по описанию created_date, вернет 30, 29 и 28 сентября. Внешний выбор, упорядоченный по created_date, вернет 28 сентября. Я что-то упустил? - person boes; 01.10.2010