Я бы попросил помощи в понимании того, какие все СУБД Oracle, DB2, Sybase поддерживают общее табличное выражение (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 вне подзапросов - оба запроса генерируются динамически по столбцам, критериям, безопасности и т. Д. Кроме того, сам вышеуказанный запрос может использоваться в другом запросе как подзапрос. Таким образом, принцип - это динамически генерируемые представления, которые можно повторно использовать позже. Некоторые запросы могут иметь до 10-12 таких динамических представлений, которые также объединяются вместе. Проблема в том, что приложение должно быть независимым от базы данных, по крайней мере, в том, что касается PG, Oracle и DB2, а функции, не поддерживаемые одним, не реализованы вообще.