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,则报告将显示 IC_N 值以 S123 开头的结果...但是,当没有为该过滤器输入任何内容时,不要强制用户输入任何内容。如果没有输入,它将显示 IC_N Like %(表示全部)。

任何帮助表示赞赏。谢谢。

4

1 回答 1

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))
于 2012-12-14T02:15:21.647 回答