我有以下查询。但它在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)
答案 0 :(得分:2)
这样的事情:
select *
from Table1
where
Date >= '2013-01-09' and
(
(@lastName = 'Davis' and lastname = @lastName) or
(@lastName <> 'Davis' and lastname in ('Brown','Hudson'))
)
答案 1 :(得分:0)
如果要按三个名称过滤结果,请使用以下查询:
declare @lastName varchar(20)
set @lastName = 'Davis'
select * from Table1
where Date >= '2013-01-09'
and lastname in(
'DAvis' ,'Brown','Hudson')
答案 2 :(得分:0)
有趣。我认为在这种情况下,特别是导致问题的是“'布朗','哈德森'”。你可能最好不要使用案例陈述。
问题是我不知道在单个案例中返回多个值的方法,所以你必须像Alex说的那样并使用简单的布尔逻辑。您可以在where子句中使用case语句,但不要在单个case中返回多个值。