Случай, когато в клаузата where да избирате между две колони, SQL Server

Имам две колони, между които да избирам в клаузата where, и двете са колони с дати. Дата1 и Дата2.

Трябва да изпълня тези условия.

When @temp1= 1 and @temp2= 0 then Date1 between (@startdate and @enddate)
When @temp1= 0 and @temp2= 1 then between (@startdate and @endDate)
when @temp1= 1 and @temp2 =1 then Date1 between (@startDate and @endDate) and Date2 between (@startdate and @endDate)    

Трябва да напиша нещо подобно

Case when @temp1 = 1 then Date1 between  (@startdate and @enddate) 
     when @temp2 = 1 then Date2 between  (@startdate and @enddate) 
     when @temp1 = 1 and @temp2 = 1 then (Date1 between  (@startdate and @enddate) and  Date2 between  (@startdate and @enddate)

Моля, помогнете, благодаря предварително


person user3932191    schedule 12.07.2015    source източник
comment
Както за въпроса, така и за приетия отговор: кога BETWEEN започна да приема скоби около диапазона? Не се анализира добре в 2008R2.   -  person HABO    schedule 12.07.2015


Отговори (1)


Вместо да използвате CASE, можете да използвате WHERE клаузи като това:

WHERE
    (@temp1 = 0 OR Date1 between (@startdate and @enddate)) AND
    (@temp2 = 0 OR Date2 between (@startdate and @enddate))

Ако @temp1 = 0, тогава първата част от първото условие е изпълнена и условие Date1 between (@startdate and @enddate) не се оценява. Ако обаче @temp1 = 1, тогава ще бъде оценено between. Същото важи и за условието @temp2 и Date2

person dotnetom    schedule 12.07.2015
comment
Това е просто и точно това, което търсих, благодаря ти, пич - person user3932191; 12.07.2015