2012-12-14 45 views
1

我正在使用SSRS 2005.我創建了一個名爲icVar的報告參數。我應該怎麼做才能讓此過濾器成爲可選項。意思是如果用戶在文本框中輸入內容,將根據輸入內容顯示結果,但如果沒有輸入任何內容,則只會將其顯示爲全部內容。這是我的數據集中的查詢。使過濾器參數可選

SELECT PASS_M, ENTRY_DT, EXIT_DT, WORKED_HRS, ACCESS_LOCATION_X, IC_N, COMPANY_M, 
CONSECUTIVE_D 
FROM TEMP_TARGET 
WHERE (CONSECUTIVE_D >= @consecDays) AND (ENTRY_DT BETWEEN @startDate AND @endDate) AND 
(ACCESS_LOCATION_X LIKE @accessVar) AND 
(IC_N LIKE @icVAr) 

我正在使用通配符%作爲我的icVar。因此,如果用戶輸入了該篩選器的S123,則報告將顯示以S123開頭的IC_N值的結果...但是,如果沒有爲該篩選器輸入任何內容,請勿強制用戶輸入任何內容。如果沒有輸入任何內容,它應顯示IC_N Like%(表示全部)。

任何幫助表示讚賞。謝謝。

回答

2

只需使用表達式求值短路 - 測試空第一且僅當它不爲空不表達的下一部分評估,爲LIKE測試(見最後一行的條件):

SELECT PASS_M, ENTRY_DT, EXIT_DT, WORKED_HRS, ACCESS_LOCATION_X, IC_N, COMPANY_M, CONSECUTIVE_D 
FROM TEMP_TARGET 
WHERE (CONSECUTIVE_D >= @consecDays) 
AND (ENTRY_DT BETWEEN @startDate AND @endDate) 
AND (ACCESS_LOCATION_X LIKE @accessVar) 
AND ((@icVar IS NULL) OR (IC_N LIKE @icVAr)) 
+0

感謝您的回覆,但是如果我想說如果icVar爲空,那麼可以向我展示整個聲明,它是IC_N like'%'else IC_N LIKE icVar。我認爲你的建議有點類似,但我不知道如何測試你的解決方案,IC_N沒有空值。 – 10e5x

+0

我已經更新了包含完整SQL的答案 - 基本上只有在參數不爲空時才測試IC_N –

+0

謝謝,它有效。感謝您的解決方案,我迫切需要和您的解決方案使它準時。你介意看看你能不能幫助我解決這個問題。你可能會提供幫助。 [link] http://stackoverflow.com/questions/13857201/multiple-value-selection-and-optional-filter-in-ssrs-2005-report [link] – 10e5x