在T-SQL WHERE子句中有条件地包含一行

时间:2019-02-21 15:06:31

标签: sql-server tsql where-clause

老实说,我已经解决了此处发布的其他问题,其中提到有条件的where子句,但我没有看到任何适合我情况的答案。如果有的话,请指向我!

在由SSRS报告调用的存储过程中,用户可以在下拉列表中选择两个值之一-说“是”或“否”,然后该变量进入变量@color

在存储过程的WHERE子句中,我需要根据用户的选择进行不同的过滤。

因此,如果是@color = 'Yes',那么我需要在WHERE子句中有一行,内容类似于tb1.somecolumn = 'BLUE'。但是如果使用@color = 'No',那么我根本不需要where子句中的那一行(tb1.somecolumn可以是任何值)。

如何在WHERE子句中有条件地包含一行?

2 个答案:

答案 0 :(得分:1)

尝试以下条件

WHERE (@color = 'Yes' AND tb1.somecolumn = 'BLUE') 
   OR (@color = 'No'  AND tb1.somecolumn = tb1.somecolumn)

答案 1 :(得分:1)

按如下所示在WHERE中包含@color的支票。

WHERE (@color = 'No')
OR    (@color = 'Yes' AND tb1.somecolumn = 'BLUE') 

说明:

如果@color的值为'No',则返回所有行。
如果@color的值为'Yes',则仅返回'BLUE'行。