2017-08-31 101 views
0

我期望能夠使用4個參數中的任何一個搜索訂單的位置。 當我尋找一套完整的參數時,我有什麼作品,但是當它們中的任何一個留空時,沒有結果返回。 (所有4個參數被聲明爲VARCHAR(255))SSRS搜索允許一些空白的多個參數

select 
    ContactName, 
    ContactEmail, 
    ContactPhone, 
    OriginCity, 
    OriginState, 
    OriginZip, 
    DestCity, 
    DestState, 
    DestZip 
from Orders 
where 
    (OriginCity in (@Origin) 
    or OriginState in (@OriginS)) 
    and 
    (DestCity in (@Dest) 
    or DestState in (@DestS)) 
order by 
    OriginCity, 
    OriginState, 
    DestCity, 
    DestState 

回答

0

您需要添加額外的OR條件的WHERE子句處理NULL參數英寸所以,你的WHERE子句應該是這個樣子:

WHERE 
( 
    (OriginCity in (@Origin) OR @Origin IS NULL) 
    OR 
    (OriginState in (@OriginS) OR @OriginS IS NULL) 
) 
AND 
(
    (DestCity in (@Dest) OR @Dest IS NULL) 
    OR 
    (DestState in (@DestS) OR @DestS IS NULL) 
) 

爲了避免表掃描,在查詢的結尾處添加OPTION(RECOMPILE)。