Exception Join entspricht eigentlich dem "not exists", der später implementiert wurde.

Und ein With-SQL ist nur eine andere Schreibweise. Es wird tatsächlich keine temporäre Tabelle erstellt.
Ich habe aber aus ähnlichen Gründen auch schon mit temporären Tabellen gearbeitet, also in 2 oder auch mehr Schritten selektiert:

create table tempA ... as select ....
create table tempB ... as select * from tempA .....