SQL ステートメントを解析して再構築することなく、Oracle でクエリをネストする信頼できるアルゴリズムの方法を探しています。DB2、MYSQL、および SQLITE では、次のように、内側のサブクエリに設定された最大の列から、非常に外側のクエリに設定された最小の列に簡単にネストできます。
SELECT A, B FROM (
SELECT A, B, C FROM (
SELECT A, B, C, D FROM (
SELECT * FROM myTable
)
)
)
)
これは Oracle では機能しません。WITH 句を使用する必要がありましたが、これにより次のような 1 レベルのネストが可能になります。
WITH Q1 as (
SELECT * FROM myTable
)
SELECT A, B FROM Q1
上記のDB2やMySQLのようなOracleでselectステートメントをネストするアルゴリズム的な方法はありますか
常に単一のテーブルであると想定できます。クエリは自動的に生成されます
根本的な原因を見つけました:
私のコードは、「AS エイリアス」が必要であると想定し、「Select A, B from (select A, B, C from myTable) AS Q1」のようにサブクエリに追加します --- Oracle はそれを好まず、エラーを出します」右括弧がありません」