Как исправить «функция не разрешена» при использовании row_number () над представлением? - PullRequest
2 голосов
/ 10 ноября 2011
select * from       (                                                   
select a.*,row_number() over() as rk                                    
from table1 tba  
                     ) as foo where rk between 11 and 20  

Это работает для таблицы базы данных.Я использую представление, которое является объединением 2 таблиц.Когда я пытаюсь сделать rownum, он говорит: « Функция не разрешена »

select * from       (                                                   
select a.*,row_number() over() as rk                                    
from view1 v1  
                     ) as foo where rk between 11 and 20  

Любое предложение или альтернатива для rownum в DB2?

Ответы [ 2 ]

2 голосов
/ 10 ноября 2011

Другая альтернатива включению его в представление, как предлагает @GregM, - поместить его в CTE:

WITH numbered as (SELECT a.*, ROW_NUMBER() OVER() as rk
                  FROM table1 as a)
SELECT *
FROM numbered
WHERE rk BETWEEN 11 AND 20

Обратите внимание, что это примерно так же медленно, как ваш оригинальный код (который отлично работает в моей версии).

2 голосов
/ 10 ноября 2011

Вы должны включить row_number() в вашем представлении

...