我想根据参数上的变量在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
此查询的目的是允许用户在他们选择的列之间进行搜索。此外,参数的使用是为了编写报告服务报告。
答案 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)