两个查询的关键字WITH

时间:2014-09-09 23:04:43

标签: sql-server subquery with-statement

我想这样做:

WITH temp (f1, f2, ...)
BEGIN
    SELECT * FROM temp WHERE <condition 1>
    SELECT * FROM temp WHERE <condition 2>
END

但SQL Server引发错误... 有什么办法解决这个问题吗?

2 个答案:

答案 0 :(得分:1)

您可以定义多个用逗号,分隔的CTE ......

;WITH temp1 (f1, f2, ...) AS 
(    
    SELECT * FROM temp WHERE <condition 1>
 ), 
 Temp2 (f1, f2, ...) AS
 (
    SELECT * FROM temp WHERE <condition 2>
  )
SELECT ......

或者,如果你想要从两个查询中返回的组合结果,你可以在One cte中执行此操作....

;WITH temp1 (f1, f2, ...) AS 
(    
  SELECT * FROM temp WHERE <condition 1>
  UNION ALL
  SELECT * FROM temp WHERE <condition 2>
 )
SELECT ......

答案 1 :(得分:0)

您可以使用UNION ALL合并两个数据集

WITH temp AS (select * from mytable)
   SELECT * FROM temp WHERE <condition 1>
   UNION ALL
   SELECT * FROM temp WHERE <condition 2>