SQL:两个表联合多个CTE

时间:2017-02-13 14:29:42

标签: sql union common-table-expression

我的目标是在SQL中组合两个表,其中每个表都很复杂,并且必须使用with table as alias语法定义自己的公用表表达式。

所以我们有第一个表格,语法如下:

with table1 as (
select/from/where statement),

table2 as (
select/from where statement),

select table1 join table2 on [...]

第二个表格,语法类似:

with table3 as (
select/from/where statement),

table4 as (
select/from where statement),

select table3 join table4 on [...]

我的问题是:简单地将union放在这两个表之间不会削减它。编译器将上面两个表之间的union视为不正确的表达式。

(我的另一种方法是,将整个第一个表定义为table5,将整个第二个表定义为table6,然后将它们联合起来失败,因为你似乎不能将几个“with as”语句堆叠在一起,似乎。)

1 个答案:

答案 0 :(得分:2)

你必须在第一个SELECT之前放置所有CTE,但是你可以将它们UNION,就好像它们是表格一样:

WITH Table1 AS (..)
, Table2 AS (..)
, Table3 AS (..)
, Table4 AS (..)
SELECT Table1 JOIN Table2..
UNION 
SELECT Table3 JOIN Table4..