WITH cte1 AS ( SELECT ... FROM table3 JOIN ( SELECT ... FROM table1 JOIN table2 ON table1.col1 = table2.col2 WHERE ... AND ... ) AS table_x ON ... WHERE ...), cte2 AS ( SELECT ... FROM table4 JOIN ( SELECT ... FROM table1 JOIN table2 ON table1.col1 = table2.col2 WHERE ... AND ... ) AS table_x ON ... WHERE ...), ) SELECT ... FROM cte1 JOIN cte2 ON ... WHERE ...