Помощь с условием запроса SQL Server - PullRequest
1 голос
/ 10 июня 2011

У меня следующий запрос. но это дает мне ошибку в предложении in.

declare @lastName varchar(20)
set @lastName = 'Davis'

select *
from Table1 
where Date >= '2013-01-09'  
and lastname in( 
    case 
    when @lastName = 'DAvis' THEN @lastName 
    else 'Brown','Hudson' end)

Ответы [ 3 ]

2 голосов
/ 10 июня 2011

Примерно так:

select *
from Table1 
where 
    Date >= '2013-01-09' and
    (
        (@lastName = 'Davis' and lastname = @lastName) or 
        (@lastName <> 'Davis' and lastname in ('Brown','Hudson'))
    )
0 голосов
/ 10 июня 2011

Интересно.Я думаю, что в данном случае именно «Браун», «Гудзон» является причиной проблемы.Возможно, вам лучше вообще не использовать оператор case.

Проблема в том, что я не знаю, как вернуть несколько значений в одном случае, поэтому вы должны делать, как сказал Алекс, и использовать простой логический тип.логика.Однако вы можете использовать оператор case в предложении where, только чтобы не возвращать несколько значений в одном регистре.

0 голосов
/ 10 июня 2011

Если вы хотите отфильтровать результаты по трем именам, используйте следующий запрос:

declare @lastName varchar(20)
set @lastName = 'Davis'

select * from Table1 

where Date >= '2013-01-09'  
and lastname in(
         'DAvis' ,'Brown','Hudson')
...