Как использовать SQL WHERE CASE с NOT IN или равно в то же время?
Привет всем (мой первый пост в стеке!),
Это работает:
where
Tran_date between @FromDate and @ToDate
and Range = @Range
and Store_ID =
case when @Range = 'RangeName' then
1234
else
Store_ID
end
а как мне этого добиться?
where
Tran_date between @FromDate and @ToDate
and Range = @Range
and Store_ID
case when @Range = 'RangeName' then
not in (1234, 5678)
else
Store_ID
end
3 ответа
Решение
Я думаю, что вы хотите:
AND NOT (@Range = 'RangeName' AND Store_ID IN (1234,5678))
where
Tran_date between @FromDate and @ToDate
and Range = @Range
and Store_ID
case when @Range = 'RangeName' AND Store_Id in (1234, 5678)
9999 -- Assumes 9999 is a non possible value.
-- If it is possible then pick one that isn't.
else
Store_ID
end
Как насчет этого:
where Tran_date between @FromDate and @ToDate
and Range = @Range
and (@Range = 'RangeName' and Store_ID not in (1234, 5678)
or @Range <> 'RangeName' and Store_ID = Store_ID)