帮助解决SQL Server查询条件

| 我有以下查询。但是在
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)
    
已邀请:
        像这样:
select *
from Table1 
where 
    Date >= \'2013-01-09\' and
    (
        (@lastName = \'Davis\' and lastname = @lastName) or 
        (@lastName <> \'Davis\' and lastname in (\'Brown\',\'Hudson\'))
    )
    
        有趣。我认为在这种情况下,正是导致问题的原因是“ \'\'Brown \',\'Hudson \'\”。您可能最好根本不使用case语句。 问题是我不知道在一种情况下返回多个值的方法,因此您必须像Alex所说的那样做,并使用简单的布尔逻辑。但是,您可以在where子句中使用case语句,只是不要在单个case中返回多个值。     
        如果要按三个名称过滤结果,请使用以下查询:
declare @lastName varchar(20)
set @lastName = \'Davis\'

select * from Table1 

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

要回复问题请先登录注册