我可以用这种方式使用CTE吗?

时间:2015-03-17 02:46:32

标签: sql-server tsql common-table-expression

尝试重构存储过程以将繁重的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

虽然最终选择不会相互连接,但我仍然可以期待正确的结果集

1 个答案:

答案 0 :(得分:1)

在每个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


相关问题