当bit = 1时,只使用where子句

Ada*_*olt 2 sql t-sql sql-server

我现在有一些看起来像这样的SQL代码.

    insert into @SortedProducts (peid)
    select pd.ProductEntryId 
    from @ProductFilters FILT
        INNER JOIN J_ProductDetails pd ON FILT.ProductEntryId = pd.ProductEntryId
    WHERE pd.Active = 'True'
    and pd.IsRangeOfProducts = CASE WHEN @ClearanceFeatureApplied = 1 then 0 else 1 END 
Run Code Online (Sandbox Code Playgroud)

但是,在最后一行,我只想在@ClearanceFeatureApplied = 1时应用where子句

如果@ClearanceFeatureApplied = 0那么我不应该有这个where子句.pd.IsRangeOfProducts也有点.

任何建议将不胜感激.

谢谢!

Gor*_*off 6

只需使用布尔逻辑:

insert into @SortedProducts (peid)
    select pd.ProductEntryId 
    from @ProductFilters FILT join
         J_ProductDetails pd 
         on FILT.ProductEntryId = pd.ProductEntryId
    where pd.Active = 'True' and
          (@ClearanceFeatureApplied <> 1  or pd.IsRangeOfProducts = 0) ;
Run Code Online (Sandbox Code Playgroud)