Reporting services 如何使用可选参数编写SQL查询?
我正在使用SQL Server Reporting Services制作一些报告。 我有一些报告中的过滤器是可选的 例如。。假设你有一份关于书籍的报告。最终用户可以选择无作者、一作者或多作者指定或筛选 我不相信我能在我的查询中加入IF{}语句 在SQL Server Reporting Services中是否有这样做的建议或最佳方法?Reporting services 如何使用可选参数编写SQL查询?,reporting-services,Reporting Services,我正在使用SQL Server Reporting Services制作一些报告。 我有一些报告中的过滤器是可选的 例如。。假设你有一份关于书籍的报告。最终用户可以选择无作者、一作者或多作者指定或筛选 我不相信我能在我的查询中加入IF{}语句 在SQL Server Reporting Services中是否有这样做的建议或最佳方法? 谢谢 如果看不到您编写的整个过程,就很难判断,但是通过在中使用语句,您可以在WHERE子句中包含多个值 例如: 如果愿意,您可以使用一个set分隔符,然后在WHE
谢谢 如果看不到您编写的整个过程,就很难判断,但是通过在中使用语句,您可以在WHERE子句中包含多个值 例如: 如果愿意,您可以使用一个set分隔符,然后在WHERE子句中使用split函数,以单个类型(例如VARCHARMAX,TEXT参数)提供author列表中的所有内容。显然,如果此参数为空或NULL,则该过程将返回所有书籍
可能还有其他方法,但这一种对我有效。你可以在任何需要条件的地方这样做
WHERE ((:param0 IS NULL) OR (column_name0 = :value0))
AND ((:value1 IS NULL) OR (column_name1 = :value1))
AND...
如果不想使用参数,请将Null传递给该参数
在SSRS中,您需要在SSRS中将参数默认设置为NULL 一种解决方案是将请求的作者推送到一个暂存表中并从中查询
Select ...
From books
Where Exists (
Select 1
From author_staging As S
Where S.author = books.author
)
如果所需的行为是在未选择任何作者的情况下返回所有书籍,则可以执行以下操作:
Select ...
From books
Where Exists (
Select 1
From author_staging As S
Where S.author = books.author
Union All
Select 1
From ( Select 1 As Value ) As Z
Where Not Exists (
Select 1
From author_staging As S1
)
)
或其他形式:
Select ...
From books
Where Exists (
Select 1
From author_staging As S
Where S.author = books.author
)
Or Not Exists (
Select 1
From author_staging As S1
)
有很多方法可以解决这个问题,但是你真的应该提供一些实际的例子。为什么你不能在你的查询中加入一个IF语句呢?托尼的副本-你说得对,它是一个副本。然而,我在Reporting Services中对此进行了标记,因为可能有一种内置的方法来处理它。更新了我的答案,因为在更改标记之前,我不知道这是针对SSR的。。。同样的答案仍然适用,你只需要在SSRS中做一些事情来使用它。。。如果不想使用,请参阅我的应答器将Null传递到参数中-也可以创建参数默认为Null的过程。也可以使用除NULL以外的“魔术”默认值@onedaywhen:+1,也是这样:-尽管要小心,您可能会意外地返回所有行:/
Select ...
From books
Where Exists (
Select 1
From author_staging As S
Where S.author = books.author
)
Or Not Exists (
Select 1
From author_staging As S1
)