Общее табличное выражение в подзапросе

Я бы попросил помощи в понимании того, какие все СУБД 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, а функции, не поддерживаемые одним, не реализованы вообще.

7
задан OMG Ponies 26 July 2011 в 03:25
поделиться