Oracle、DB2、SybaseのすべてのRDBMSがサブクエリの共通テーブル式(CTE)をサポートしていることを理解する助けが必要です。私は、PostgreSQLはMS SQL Serverにはないと認識しています。サブクエリでの共通テーブルの表現
SELECT a.*, b.*
FROM (WHERE aa as (
<<select_query>),
SELECT *
FROM aa
WHERE <<criteria>>
) as a
LEFT JOIN (
WITH bb as (
<<select_query>
),
select * from bb inner join tbl_c on <<innerjoin>> where <<criteria>>
) as b
on <<join_expr>>
サブクエリの外側にwith句を定義できません。両方のクエリが動的に生成されます。w.r.t. また、上記のクエリ自体を別のクエリでサブクエリとして使用することもできます。 要約すると、原理は動的に生成されたビューであり、後で再利用可能です。一部のクエリでは、このような動的ビューも一緒にマージされるまで最大で10-12回ある可能性があります。 問題は、少なくともPG、Oracle & DB2に関する限り、アプリケーションはデータベースに依存しないと考えられており、DB2によってサポートされていない機能はまったく実装されていないということです。直接あなたの質問への答えはありませんが、多分あなたはこのことについて考えることができ
Oracleはそれを「サブクエリ・ファクタリング」と呼び、それを使用してサブクエリ内で定義すると、貧しい選択肢として私を襲います。高くなるほど、使用範囲が広がります。 –