次のような SQL クエリがあります。
SELECT foo "c0",
bar "c1",
baz "c2",
...
FROM some_table
WHERE ...
制限を適用し、このクエリからレコードのサブセットのみを返すために、次のラッパー SQL を使用します。
SELECT *
FROM (
SELECT t.*,
ROW_NUMBER() OVER (ORDER BY ...) rnum
FROM (
... original SQL goes here ...
) t
)
WHERE rnum BETWEEN 1 AND 10
私の問題は、元のクエリが他のテーブルへの多数の結合にわたって 1000 を超える列を選択していることです。Oracleには、テーブルまたはビューごとに1000列の内部制限があり、明らかに結果セットを制限するために使用しているラッパーSQLが、この制限が適用される一時ビューを作成しているため、全体が失敗します。
そのようなビューを作成しない、または 1000 列の制限の影響を受けないページネーションの別の方法はありますか?
作業をチャンクに分割したり、1000 列以上を選択しないなどの提案には興味がありません。これらの方法はすべて十分に認識しています。