在子查询中使用If select ... else select ..语句

时间:2016-10-14 17:31:06

标签: sql sql-server

假设我有一个类似以下的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 (,则会出现语法错误。

目前我正在执行单独的查询,然后将结果组合并分组到内存对象中,这有效但不理想,并且想知道是否有更好的方法

1 个答案:

答案 0 :(得分:2)

我认为你可以这样做:

SELECT *
FROM (
   SELECT Column1, Column2 
   From Table3
   WHERE @Date1 >= @Date2

UNION ALL

   SELECT Column1, Column2 
   FROM Table4
   WHERE @Date1 < @Date2 ) AS t