我正在使用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用于该过滤器,则报告将显示结果,其中IC_N值以S123开始...但是当没有为该过滤器输入任何内容时,不要强制用户输入任何内容。如果没有输入,它将显示IC_N Like%(表示全部)。
感谢任何帮助。感谢。
答案 0 :(得分:2)
只需使用表达式评估短路 - 首先测试Null,并且只有当它不是Null时,表达式的下一部分才会评估,测试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))