6

Hi all (my first post on the Stack!),

This works:

where
    Tran_date between @FromDate and @ToDate

and Range = @Range

and Store_ID =
    case when @Range = 'RangeName' then
        1234
    else
        Store_ID
    end

but how can I achieve this?:

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
abatishchev
  • 98,240
  • 88
  • 296
  • 433
Warren
  • 1,984
  • 3
  • 29
  • 60

3 Answers3

5
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
Kenneth Fisher
  • 3,692
  • 19
  • 21
2

I think you want:

AND NOT (@Range = 'RangeName' AND Store_ID IN (1234,5678))
GilM
  • 3,711
  • 17
  • 18
0

How about this:

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)
bobs
  • 21,844
  • 12
  • 67
  • 78