SQL: объявление нескольких переменных, которые не все будут использоваться одновременно - PullRequest
0 голосов
/ 26 октября 2018

Я пишу запрос, для которого нужно будет установить несколько переменных, но не все они будут использоваться одновременно. Это выглядит примерно так.

 Declare @SuveryID as Int 
 Declare @StateAbbrev as Varchar
 Declare @InvStart as Date
 Declare @InvEnd as Date
 Set @SuveryID = ''
 Set @StateAbbrev = ''
 Set @InvStart = ''
 Set @InvEnd = ''

Что я хочу сделать, так это то, что когда идентификатор опроса имеет значение, остальные будут игнорироваться. И всякий раз, когда @StateAbbrev, @InvStart и @InvEnd имеют значение, @SurveryID игнорируется.

1 Ответ

0 голосов
/ 26 октября 2018

Один способ будет выглядеть так: *

if @SuveryID  is null
begin
   select *
   from YourTable
   where <all your other variables>
end
else
begin
   select *
   from YourTable
   where Column = @SuveryID  
end

Другой способ - установить для переменных значение NULL при @SuveryID is not null, а затем использовать запрос перехвата всех.Это так называемые Kitchen Sink запросы, и эту статью от Аарона Бертранда стоит прочесть наверняка.

if @SuveryID  is not null
begin
   set @StateAbbrev  = null
   set @InvStart  = null
   <set all other variables to null>
end

select *
from YourTable
where (Column = @SuveryID or @SuveryID is null)
and   (Col2 = @StateAbbrev or @StateAbbrev  is null)
and   <continue for all variables>
...