2017-08-31 7 views
0

4つのパラメータのいずれかを使用して注文の場所を検索できるようになっています。 設定された完全なパラメータのペアを検索するときには何が動作しますが、空白のままにしておくと結果は返されません。あなたがNULLパラメータを処理するために、あなたのWHERE句で追加のOR条件を追加する必要がいくつかの空白を許可する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

(すべての4つのパラメータはVARCHAR(255)として宣言されています)。クエリの最後にOPTION(RECOMPILE)を追加し、テーブルスキャンを回避するために

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) 
) 

:だからあなたのWHERE句は次のようになります。