row_number number iseries ejemplo as400 sql db2 rownum

sql - number - rownum db2 as400



¿Cómo arreglar "función no permitida" cuando se usa row_number() sobre una vista? (2)

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

Esto funciona para la tabla de la base de datos. Estoy usando una vista que es una combinación de 2 tablas. Cuando trato de hacer rownum está diciendo: " Función no permitida "

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

¿Alguna sugerencia o alternativa para rownum en DB2?


Debe incluir row_number() en su vista


La otra alternativa para incluirlo en la vista, como sugirió @GregM, es ponerlo en un CTE:

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

Tenga en cuenta que esto es tan lento como su código original (que funciona bien en mi versión).