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

これはデータベーステーブルで機能します。2 つのテーブルを結合したビューを使用しています。rownum を実行しようとすると、「Function not allowed」と表示されます

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

DB2 の rownum の提案または代替案はありますか?

4

2 に答える 2

2

@GregMが提案したように、ビューに含めるもう1つの方法は、CTEに配置することです。

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

これは元のコードとほぼ同じくらい遅いことに注意してください(私のバージョンでは問題なく動作します)。

于 2011-11-10T00:35:59.873 に答える
2

row_number()ビューにを含める必要があります

于 2011-11-09T23:23:25.507 に答える