Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reporting services 如何使用可选参数编写SQL查询?_Reporting Services - Fatal编程技术网

Reporting services 如何使用可选参数编写SQL查询?

Reporting services 如何使用可选参数编写SQL查询?,reporting-services,Reporting Services,我正在使用SQL Server Reporting Services制作一些报告。 我有一些报告中的过滤器是可选的 例如。。假设你有一份关于书籍的报告。最终用户可以选择无作者、一作者或多作者指定或筛选 我不相信我能在我的查询中加入IF{}语句 在SQL Server Reporting Services中是否有这样做的建议或最佳方法? 谢谢 如果看不到您编写的整个过程,就很难判断,但是通过在中使用语句,您可以在WHERE子句中包含多个值 例如: 如果愿意,您可以使用一个set分隔符,然后在WHE

我正在使用SQL Server Reporting Services制作一些报告。 我有一些报告中的过滤器是可选的

例如。。假设你有一份关于书籍的报告。最终用户可以选择无作者、一作者或多作者指定或筛选

我不相信我能在我的查询中加入IF{}语句

在SQL Server Reporting Services中是否有这样做的建议或最佳方法?
谢谢

如果看不到您编写的整个过程,就很难判断,但是通过在中使用语句,您可以在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
                    )