Как искать между двумя столбцами, используя параметр и оператор case? SQL Server - PullRequest
0 голосов
/ 11 мая 2010

Я бы хотел выполнить поиск по столбцам в запросе 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 голосов
/ 11 мая 2010

Я нашел решение, которое подходит мне лучше всего добавив это выражение в предложении where

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

0 голосов
/ 11 мая 2010

Сколько у вас столбцов? Если бы не так много, я бы просто жестко запрограммировал все возможные комбинации в хранимую процедуру и выбрал правильную с условным логическим тестированием IF (@Column = 1) и т. Д. Я думаю, что единственной альтернативой является использование динамического SQL. Пытаясь создать один запрос, который делает все это, вы просто столкнетесь с проблемами, при которых повторное использование плана выполнения в одном случае приводит к проблемам с производительностью в другом случае.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...