我正在构建SSRS报告,并希望我的一个参数在输入或不输入数据时是可选的。
以下是一个更好理解的示例查询:
SELECT
C1
,C2
,C3
FROM
db_Database..tb_Table
WHERE
tb_Table_DateTime between [THEN] and [NOW]
AND
tb_Table_Integer IN (@Integer)
如果在我的查询中,我可以忽略整体:
AND tb_Table_Integer IN (@Integer)
如果用户选择不输入任何数字,则行。
基本上,除非通过@integer指定,否则我希望返回所有数据。
如果在查询中不可能,可以在Visual Studio中实现吗?
干杯。
答案 0 :(得分:3)
这通常通过以下方式处理:
WHERE . . . AND
(@Integer IS NULL OR tb_Table_Integer = @Integer)
请勿使用IN (@Integer)
。这有点暗示您认为@Integer
可能是一个列表。这是不可能的。
答案 1 :(得分:0)
最常见的方法是使用coalesce或nullif。像这样:
WHERE coalesce(@integer,tb_Table_Integer) = tb_Table_Integer