我的 sql 声明有两部分附有 'union all'。我希望第二部分仅在某些条件为真时执行

My sql statement has two parts attached with 'union all'. I want the second part to exceecute only when some condition is true

我的查询太大,无法粘贴到此处,并且至少涉及 15 个表,因此我粘贴了一个小示例来解释我的问题

SELECT City, Country FROM Customers
WHERE Country='Germany'
UNION ALL
SELECT City, Country 
FROM Suppliers
WHERE Country='Germany'
ORDER BY City; 

我希望仅当某些条件为真(来自参数中的 UI )时才执行查询的所有部分的联合,例如boolean combo=true.

谢谢

这个怎么样:

SELECT City, Country FROM Customers
WHERE Country='Germany'
UNION ALL
SELECT City, Country 
FROM Suppliers
WHERE Country='Germany'
AND   @Combo = true
ORDER BY City; 

它仍然运行联合的第二部分,但是如果@Combo 为真,它只会 return 记录。节省大量 IF THEN ELSE 语句。如果您在联合中有很多查询也有帮助,因为每个查询都可以有自己的@Combo 变量。