我的目标是在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”语句堆叠在一起,似乎。)
答案 0 :(得分:2)
你必须在第一个SELECT之前放置所有CTE,但是你可以将它们UNION,就好像它们是表格一样:
WITH Table1 AS (..)
, Table2 AS (..)
, Table3 AS (..)
, Table4 AS (..)
SELECT Table1 JOIN Table2..
UNION
SELECT Table3 JOIN Table4..