0

パラメータ値が NULL の場合も、NON-NULL 値を含む場合もある SSRS でレポートの 1 つを作成しています。

ユーザーが選択した値が (ドロップダウンリストから) NULL の場合、SQL クエリは次のようになります。

field-Name IS NULL

ユーザーが選択した値が NULL 以外の場合、SQL クエリは次のようになります。

field-Name IN (@parameter-values)

Case-When を使用してこの条件を WHERE 句に入れる必要があります。これにより、ユーザーが入力した内容が何であれ、SQL クエリによって処理され、適切な結果が返されます。ユーザーがドロップダウン リストから NULL 値と非 NULL 値の両方を選択する可能性があります。

「ケース」条件をwhere句に入れる方法、または他の解決策が存在する場合は、ガイドしてください

更新

WHERE @IR_Project_Type = 
    (
        CASE WHEN ([IR Project Type] = NULL) THEN ([IR Project Type] IS NULL)
        END 
    )

// 'IS NULL' 条件はエラーをスローします。

4

5 に答える 5

1

field-Name の値として空の文字列を許可しますか? そうでない場合:

declare @val varchar(20) = null

select *
from something
where
  ISNULL(@val,'') = ISNULL(fieldName,'');


declare @val varchar(20) = 'aaa'

select *
from something
where
  ISNULL(@val,'') = ISNULL(fieldName,'');

SQLフィドル

編集: または単に:

declare @val varchar(20) = 'aaa'

select * 
from something
where
  (case when @val is null 
     then 
       (case when fieldName is null then 1 else 0 end)
     else
       (case when fieldName = @val then 1 else 0 end) end) = 1

SQLフィドル

私の質問を見つけてください。

WHERE (case when @IR_Project_Type is null 
         then 
           (case when [IR Project Type]  is null then 1 else 0 end)
         else
           (case when [IR Project Type]  = @IR_Project_Type then 1 else 0 end) end) = 1
于 2012-11-20T09:09:44.293 に答える
1
WHERE ((@IR_Project_Type IS NULL AND [IR Project Type] IS NULL) OR [IR Project Type] = @IR_Project_Type)
于 2012-11-20T09:20:04.703 に答える
0

生意気なORを使用できますか?

WHERE (Field-Name IS NULL OR Field-Name = @parameter)
于 2012-11-20T09:08:39.720 に答える
0

これを試して:

WHERE  [IR_Project_Type] = 
    (
        CASE WHEN Isnull(@IR_Project_Type, '') = '' THEN NULL ELSE @IR_Project_Type
        END 
    )
于 2012-11-20T09:40:52.630 に答える
0

SSRS 多値パラメーターに値を含めることは (たとえ可能であったとしても) 困難nullです。

これに対する私の通常の回避策は、標準の置換文字列を の代わりに使用することですNULL"<No Value>"

次に、SQLクエリを次のように記述できます

WHERE
  [IR_Project_Type] in ( @IR_Project_Type )
  OR (
     '<No Value>' in ( @IR_Project_Type )
     AND [IR_Project_Type] is NULL
     )

NULLこれにより、真の sを処理しようとする手間が省けます。

于 2012-11-20T19:37:27.330 に答える