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

问题描述 投票:-1回答:2

老实说,我已经在这里发布了其他问题,提到有条件的条款,我没有看到任何似乎对我的情况有用的答案。如果有,请指点我!

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

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

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

我如何有条件地在WHERE条款中包含一行?

sql-server tsql where-clause
2个回答
1
投票

在WHERE中包括对@color的检查如下。

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

说明:

如果@color的值是'No',则返回所有行。 如果@color的值是'Yes',那么只返回'BLUE'行。


1
投票

请尝试以下条件

WHERE (@color = 'Yes' AND tb1.somecolumn = 'BLUE') 
   OR (@color = 'No'  AND tb1.somecolumn = tb1.somecolumn)
© www.soinside.com 2019 - 2024. All rights reserved.