Tsql 带的t-sql

Tsql 带的t-sql,tsql,select,nested,Tsql,Select,Nested,我必须用query进行查询,比如 ; WITH #table1 ( SELECT id, x from ... WHERE.... UNION ALL SELECT id, x from ... WHERE... ) WITH #table2 ( SELECT DISTINCT tbl_x.*,ROW_NUMBER() OVER (order by id) as RowNumber WHERE id in ( SELECT id from #table1

我必须用query进行查询,比如

; WITH #table1  
(  
SELECT id, x from ... WHERE....  
UNION ALL  
 SELECT id, x from ... WHERE...  
)  

WITH #table2  
(  
 SELECT DISTINCT tbl_x.*,ROW_NUMBER() OVER (order by id) as RowNumber  
WHERE id in ( SELECT id from #table1)  
)  

SELECT * FROM #table2 WHERE RowNumber > ... and ...

因此,我必须使用WITH on WITH,然后选择on second WITH,如何操作?

您可以通过用逗号分隔每个CTE,在
WITH
关键字之后定义多个CTE

WITH T1 AS
(
    SELECT id, x from ... WHERE....
    UNION ALL
    SELECT id, x from ... WHERE...
)
, T2 AS
(
    SELECT DISTINCT tbl_x.*, ROW_NUMBER() OVER (order by id) as RowNumber
    WHERE id in ( SELECT id from T1 )
)
SELECT * FROM T2 WHERE RowNumber > ... and ...

带关键字的
只需要一次。