Случай, когда в предложении 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