SSRS 和 PostgreSQL:如何传递可选参数?
SSRS and PostgreSQL: How do I pass an optional parameter?
我在 SSRS 报告中使用 PostgreSQL ODBC 数据源。
根据我之前对 MS SQL 服务器数据源的了解,要将可选参数传递给 SSRS 数据集查询,您可以这样做:
SELECT *
FROM MyTable
WHERE SomeField = @Param1 OR @Param1 IS NULL
关键是使用 OR @Param1 IS NULL
,它基本上绕过了 SomeField = @Param1
部分并有效地充当 "optional" 过滤器。但是,这在使用 PostgreSQL ODBC 数据源时似乎不起作用(不确定是由于 Postgres 还是 ODBC 或两者)。单击“刷新字段”或 executing/previewing 报告时出现错误。
部分原因可能是无法将命名参数传递给 SQL,而是必须使用“?”像这样:
SELECT *
FROM MyTable
WHERE SomeField = ?
...这使得 OR ? IS NULL
基本上不可能做到。
那么,有人知道我如何能够将可选参数传递给 SSRS 中的 PostgreSQL 数据集吗?
不是特定的 ODBC 解决方案,而是解决方法。如果 SomeField
不能是 null
:
,这将起作用
select *
from mytable
where somefield = coalesce(?, somefield)
如果 SomeField
可以是 null
并且您想 return 为空值:
where somefield is not distinct from coalesce(?, somefield)
我在 SSRS 报告中使用 PostgreSQL ODBC 数据源。
根据我之前对 MS SQL 服务器数据源的了解,要将可选参数传递给 SSRS 数据集查询,您可以这样做:
SELECT *
FROM MyTable
WHERE SomeField = @Param1 OR @Param1 IS NULL
关键是使用 OR @Param1 IS NULL
,它基本上绕过了 SomeField = @Param1
部分并有效地充当 "optional" 过滤器。但是,这在使用 PostgreSQL ODBC 数据源时似乎不起作用(不确定是由于 Postgres 还是 ODBC 或两者)。单击“刷新字段”或 executing/previewing 报告时出现错误。
部分原因可能是无法将命名参数传递给 SQL,而是必须使用“?”像这样:
SELECT *
FROM MyTable
WHERE SomeField = ?
...这使得 OR ? IS NULL
基本上不可能做到。
那么,有人知道我如何能够将可选参数传递给 SSRS 中的 PostgreSQL 数据集吗?
不是特定的 ODBC 解决方案,而是解决方法。如果 SomeField
不能是 null
:
select *
from mytable
where somefield = coalesce(?, somefield)
如果 SomeField
可以是 null
并且您想 return 为空值:
where somefield is not distinct from coalesce(?, somefield)