Как написать следующий запрос с помощью функции isnull () и оператора case - PullRequest
0 голосов
/ 30 марта 2020
   --Query#1
    declare @npi varchar(10) =null
    declare @IsGpro bit=1
    select  
    *
    from
    tbl_IA_Users I
    where I.CMSYear=2019
    and isnull(I.NPI,'') = case when @IsGpro =1   then '' else @npi end

Приведенный выше запрос (Query # 1) работает нормально, но мне не нужно использовать функцию isnull (), и я написал запрос как:

    --Query#2
    declare @npi varchar(10) =null
    declare @IsGpro bit=1
    select  
    *
    from
    tbl_IA_Users I
    where I.CMSYear=2019
    and I.NPI= case when @IsGpro =1   then null else @npi end

Но второй запрос не работает, и я не получаю никаких результатов. Как написать запрос (Query # 1) без функции isnull ()?

1 Ответ

0 голосов
/ 30 марта 2020
WHERE I.CMSYear = 2019
AND 
(
    (@IsGpro = 1 AND I.NPI is null) OR
    (@IsGpro = 0 AND I.NPI = @npi)
)
...