2016-08-16 13 views
0

ビジネスに手動でUSERIDをパラメータボックスに入力させたり、空白のままにしてすべてのUSERIDを戻したいと思っています。SSRSレポートのALLパラメータ

データセットを使用して顧客IDのリストを返すCUSTOMERIDの別のパラメータを設定しました。 USERIDの量のために私は同じ解決策を使用するのではなく、手動でUSERIDを入力するか空白のままにしてALLを戻すようにします。

SELECT 
    CUSTOMERID, 
    CASE 
    WHEN STATUSCODE = 200 THEN 'Successful Logon' 
    ELSE 'Unsuccessful Logon' 
    END as LogonStatus, 
    COUNT(*) COUNTOFACCOUNTS 

FROM 
    MA4EQNG.APPLICATIONLOG 
WHERE 
    CUSTOMERID in ('"+join(Parameters!CustomerID.Value, "','")+"') 
    AND (Cast(DATETIME as Date) >= '"& Format(Parameters!FromDate.Value, "yyyy-MM-dd") & "' 
    AND Cast(DATETIME as Date) <= '" & Format(Parameters!ToDate.Value, "yyyy-MM-dd") & "') 
    AND COMPONENTDESCRIPTION = '/eq/auth/v1/logon' 
    AND METHOD = 'POST' 

GROUP BY 
    CUSTOMERID, 
    CASE 
     WHEN STATUSCODE = 200 THEN 'Successful Logon' 
     ELSE 'Unsuccessful Logon' 
    END 

ORDER BY 
CUSTOMERID ASC 

他に必要な場合は教えてください。

+1

パラメータが「IS NULL」であるかどうかを確認できますか?だから 'WHERE(USERID = @UserID OR @UserID IS NULL)'のようなもの – NickyvV

+0

私は以下を試してみてエラーが出ました。コードに次の行を入力しました (USERID = Parameters!UserID.Value OR Parameters!UserID.Value IS NULL) また、VisualのmyパラメータにNULL値を有効にしました。 – JoelG

+0

上記のクエリでパラメータはどこで使用しますか?私は自分のSQLに自分のコードを追加できると思います。 – NickyvV

答えて

0

空の値を許可するようにUSERIDパラメータを設定し、メインデータセットのSQLスクリプトでIF条件を使用できます。

IF LEN(@USERID)>0 
*put the sql script with UserId filter in where clause* 
ELSE 
*put the sql script WITHOUT UserId filter in where clause* 
+0

これは機能しませんでした。あなたが説明したように私のwhere句に追加しようとしましたが、エラーが発生しました。 – JoelG

0

通常は、WHERE句で、このような単なるスクリプトの何かだろうと試してみてください。

ISNULL(@CustomerID、 '')= '' OR(中CUSTOMERID( ' "+(パラメータに参加!CustomerID.Value、"'、 ' ")+"'))

と長いです私は、区切られた文字列を取り込んで行に変換する関数を作成し、テーブル値関数からの結果に参加することができます。

How to split a comma-separated value to columns

関連する問題