I'm trying to do smth like this, but with sqlalchemy:
select t1.a, t2.x, l1.a_x, l2.a_x_y
from t1
join t2 on t1.id = t2.id
join lateral (select t1.a + t2.x as a_x) l1 on true
join lateral (select l1.a_x + t2.y as a_x_y) l2 on true
Problem is, sqlalchemy first autocorrelates all tables used in subquery, then, after using correlate_except
, raises FROM clause expected
exception.
UPDATE: here's a simplified demo: https://pastebin.com/XrkW2cMT sa.__version__: 1.3.17
My best guess is to use some FROM-imitation, smth like this:
select([]).select_from(text("(select 1) as X")).lateral("l1")
lateral (select a + b as c from (select 1) as X) l1
This works, but does not look pretty, and I'm concerned about possible performance issues in some weird edge cases.
Is there a better, cleaner way?