以下は仮想概念を使用したクエリですが、「仮想テーブル」 概念を使用せずに最適化された形式が必要です。
with TEMP AS
(
Select RN from
(
SELECT TCTITL,
ROW_NUMBER() OVER ( ORDER BY TCTITL asc ) AS RN FROM PVTC ORDER BY
TCTITL asc
)T
WHERE ((TCTITL >= 'AAPS ' ))
ORDER BY TCTITL asc fetch first row only )
, mytab as
(
Select * from
(
( SELECT TCTITL, TCEDUR, TCSTZF, TCTTLE, TCLSHN, TCCEQ3,
ROW_NUMBER() OVER ( ORDER BY TCTITL asc ) AS RN
FROM PVTC ORDER BY TCTITL asc )
) Q
, TEMP where Q.RN
between (TEMP.RN + 0) and ( TEMP.RN + 3)
)
select * from mytab
注:結果が 1 から 10 のテーブルがありますが、3 から 10 とだけ言う 2 つのポインター間の結果が必要です。これがこのクエリの目的です。
更新: 5 つのレコードがあり、範囲 1 t0 5 の間の Row_Number 2 に基づいてレコードを選択したい (1,2,3,4,5 は Row_number を示す)
col1 col2 col3
a b c
a1 b1 c1
-------------------------
---------------------------
--------------------------
a5 b5 c5