我可以这样使用 CTE 吗?

can I use CTE this way?

正在重构存储过程以将繁重的 SQLXML 语句转换为简单的 SQL 结果集...这很困难..

想定义多个CTE表,每个都引用前一个,像这样:

;WITH CTE1(column1)
as (....)
CTE2(column2)
as (select column2,... 
    inner join (select ... 
        group by column3 
        having column3 in (select column1 from CTE1))
CTE3
as (select ... 
    inner join (select ... 
        group by column4, column5
        having column4 in (select column1 from CTE1)
          and column5 in (select column2 from CTE2)
    )
select *
from CTE1, CTE2, CTE3

虽然最后的select没有互相join,但是还是可以期待正确的resultset

每个 CTE 后使用逗号,如下所示:



;WITH CTE1(column1)
as (....)
,
CTE2(column2)
as (select column2,... 
    inner join (select ... 
        group by column3 
        having column3 in (select column1 from CTE1))
,
CTE3
as (select ... 
    inner join (select ... 
        group by column4, column5
        having column4 in (select column1 from CTE1)
          and column5 in (select column2 from CTE2)
    )
select *
from CTE1, CTE2, CTE3