这只是我实际查询的一个非常简单的版本,我想知道如何只为一个查询而不是两个查询来进行以下选择?
If @ShowZero = 0
Select Value From Metrics
Else
Select Value From Metrics Where Value <> 0
我尝试了一些事情
Select Value From Metrics Where Value = Case @ShowZero = 0 then Value Else (here I'm stuck).
@ShowZero是0和1的标志。
谢谢!
答案 0 :(得分:3)
您不需要case
:
Select Value
From Metrics
Where @ShowZero = 0 or Value <> 0;
编辑:
这是有效的,因为,呃,这就是布尔逻辑的工作原理。换句话说,如果你为表达式做了一个逻辑表,它看起来像:
@ShowZero Value Action
0 0 Show row
0 other Show row
other 0 Filter out row
other other Show row
有多种表达方式。 if
语句就是其中之一。您可以说:&#34;我要显示一行,除非@ShowZero不是0 且值是0
&#34;。 where
子句将是:
where not (@ShowZero <> 0 and Value = 0)
或者,您可以说:&#34;当以下任何一种情况属实时,我会显示一行:
@ShowZero = 0
Value <> 0
如果两者都真的很棒!我还会显示这一行。&#34;这是我使用的where
子句。