SQL Server 2005 - 如果条件与union

Bob*_*ith 2 sql sql-server sql-server-2005

我有一个具有以下算法的SP.

IF <SomeCondition>
BEGIN
  SELECT * FROM TABLE1
END
ELSE
BEGIN
  SELECT * FROM TABLE2
END
--Union the above with the query below
UNION
  SELECT * FROM TABLE3
Run Code Online (Sandbox Code Playgroud)

返回的记录集完全相同.我需要做一个结果集的UNION和另一个查询.

有没有办法在不使用临时表的情况下执行此操作?

And*_*mar 8

怎么样:

SELECT * FROM TABLE1 WHERE <SomeCondition>
UNION
SELECT * FROM TABLE2 WHERE NOT <SomeCondition>
UNION
SELECT * FROM TABLE3
Run Code Online (Sandbox Code Playgroud)

如果您担心两次评估:

DECLARE @condition bit
SET @condition = CASE WHEN <SomeCondition> THEN 1 ELSE 0 END

SELECT * FROM TABLE1 WHERE @condition = 1
UNION
SELECT * FROM TABLE2 WHERE @condition = 0
UNION
SELECT * FROM TABLE3
Run Code Online (Sandbox Code Playgroud)