Попытка сделать выражение выражения в предложении WHERE (одно значение равно нескольким) - PullRequest
0 голосов
/ 01 апреля 2020

Я хочу иметь возможность создать выражение для случая в предложении WHERE, которое будет использовать переменную для определения того, какие критерии применять:

declare @Classification VARCHAR(20)
set @Classification = 'Leaseup/Stabilized' 

select *
from attributes a
where 
    if @Classification = 'Leaseup/Stabilized' then a.subgroup8 in ('Lease-up Communities', 'Stabilized 
        Communities')
    if @Classification = 'Product Type' then a.subgroup6 in ('Freestanding AL/ALZ', 'Rental Continuums')

Ответы [ 2 ]

3 голосов
/ 01 апреля 2020

Просто используйте обычные логи c:

select a.*
from attributes a
where (@Classification = 'Leaseup/Stabilized' and a.subgroup8 in ('Lease-up Communities', 'Stabilized Communities'
      ) OR
      (@Classification = 'Product Type' and a.subgroup6 in ('Freestanding AL/ALZ', 'Rental Continuums')
      )
0 голосов
/ 02 апреля 2020

Если вы действительно хотите Case, где

      declare @Classification 
       VARCHAR(20)
        set @Classification = 
       'Leaseup/Stabilized' 

   select *
     from attributes a
     where 
   1=  max (Case when @Classification = 
 'Leaseup/Stabilized' and a.subgroup8 in 
   ('Lease-up Communities', 'Stabilized 
    Communities') then 1 end) or
  1=   max (Case when @Classification = 
    'Product Type' and a.subgroup6 in 
    ('Freestanding AL/ALZ', 'Rental 
      Continuums') then 1 end) 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...