假设我有一个类似以下的SQL查询。
DECLARE @Date1 datetime = (SELECT TOP 1 Date FROM Table1 ORDER BY Date)
DECLARE @Date2 datetime = (SELECT Date FROM Table2 WHERE Status = 'xxx')
IF @Date1 >= @Date2
SELECT Column1, Column2 From Table3
ELSE
SELECT Column1, Column2 FROM Table4
是否可以在另一个查询中使用此查询。
我需要使用union将此查询的结果与另一个查询相结合,然后执行分组等进一步选择,但如果我在此查询周围包裹select * from (
,则会出现语法错误。
目前我正在执行单独的查询,然后将结果组合并分组到内存对象中,这有效但不理想,并且想知道是否有更好的方法
答案 0 :(得分:2)
我认为你可以这样做:
SELECT *
FROM (
SELECT Column1, Column2
From Table3
WHERE @Date1 >= @Date2
UNION ALL
SELECT Column1, Column2
FROM Table4
WHERE @Date1 < @Date2 ) AS t