2016-08-16 127 views
0

我希望能夠讓企業手動輸入USERID到參數框中或將其留空以讓其恢復所有USERID。SSRS報告的所有參數

我爲CUSTOMERID設置了另一個參數,它使用數據集來返回客戶ID列表。由於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或@UserID IS NULL)' – NickyvV

+0

我嘗試了以下並出現錯誤。我輸入了以下代碼 和(USERID = Parameters!UserID.Value OR Parameters!UserID.Value IS NULL) 我還在Visual的參數中啓用了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子句。

WHERE ISNULL(@CustomerID, '')= '' OR(CUSTOMERID在( ' 「+參加(參數!CustomerID.Value,」', ' 「)+」'))

及長我會創建一個函數,它接受一個分隔字符串,並將它們轉換爲行,然後您可以加入表值函數的結果。

How to split a comma-separated value to columns