t-sql WITH WITH

Mer*_*tez 11 t-sql select nested

我必须在WITH查询上进行查询,例如

; 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 ...
Run Code Online (Sandbox Code Playgroud)

所以我必须在WITH上使用WITH,然后在第二个WITH上使用SELECT,我该怎么做?

Tim*_*ter 24

您可以在WITH关键字后面定义多个CTE,方法是用逗号分隔每个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 ...
Run Code Online (Sandbox Code Playgroud)

http://www.4guysfromrolla.com/webtech/071906-1.shtml

  • `WITH` 关键字只需要一次。 (2认同)