SQLAlchemy を使用して、CTE とユニオンの両方を含むクエリを生成しようとしています。残念ながら、ユニオンを適用するたびに、生成された SQL に定義済みの CTE が含まれません。
UNION なしの WITH を含む SQL は次のとおりです。
(Pdb) import sqlalchemy as sa
(Pdb) print str(sa.select([sa.select([sa.sql.null().label('a1')]).cte('bb')]))
WITH bb AS
(SELECT NULL AS a1)
SELECT bb.a1
FROM bb
同じクエリですが、union への呼び出しがあります。
(Pdb) print str(sa.select([sa.select([sa.sql.null().label('a1')]).cte('bb')]).union_all(sa.select([sa.sql.null().label('b1')])))
SELECT bb.a1
FROM bb UNION ALL SELECT NULL AS b1
ユニオン呼び出しを使用したクエリにはまだ WITH が含まれていると思いますが、そうではありません。