如何使用参数和case语句在两列之间进行搜索? SQL Server

时间:2010-05-11 09:20:17

标签: sql-server reporting-services reporting

我想根据参数上的变量在s查询或表中搜索列,例如

Declare @SelectAll as integer
Set @SelectAll = 1
Declare @Column as integer

Select mt.Column1, mtColumn2 
From MyTable as mt
Where Case When @SelectAll = 1 Then 
           mt.Column1 IN(@Column) and mt.Column2 (' Selecting all")
           When @SelectAll = 1 Then 
           mt.Column2 IN(@Column) and mt.Column1 (' Selecting all")
           End 

此查询的目的是允许用户在他们选择的列之间进行搜索。此外,参数的使用是为了编写报告服务报告。

2 个答案:

答案 0 :(得分:0)

您有多少列?如果不是很多,我只会硬编码存储过程中的所有可能组合,并选择正确的条件逻辑测试IF (@Column = 1)等。唯一的选择是使用动态SQL我认为。尝试创建一个完成所有操作的查询,最终会遇到一个问题,即在一个案例中重用执行计划会导致另一个案例中的性能问题。

答案 1 :(得分:0)

我找到了最适合我的解决方案 通过在where子句

上添加此表达式

(@ SelectAll = 1 AND mt.Column1 IN(@Column)) 或(@SelectAll = 2 AND mt.Column2 IN(@Column)) 或(@SelectAll = 3)