我想这样做:
WITH temp (f1, f2, ...)
BEGIN
SELECT * FROM temp WHERE <condition 1>
SELECT * FROM temp WHERE <condition 2>
END
但SQL Server引发错误... 有什么办法解决这个问题吗?
答案 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>