【问题标题】:SSRS 2008 :Is it possible to specify an entire where clause within parameter?SSRS 2008:是否可以在参数中指定整个 where 子句?
【发布时间】:2018-09-19 09:41:17
【问题描述】:

我有一个要为其构建报告的表格。大约有 10 个字段,但其中 4 个字段可能包含用户希望用来过滤报告的值。

我在想我可以创建一个带有标签/值对列表的参数,并且参数项的值部分将是底层数据集的实际 where 子句,例如:

@filter
label/value
exceptions/where error_field like '%exception%'
counts/where count_field > 100
2016/where year_field = 2016

我试过数据集:

select error_field, count_field, year_field from mytable
@filter

我也试过了(把 where 排除在参数值之外):

select error_field, count_field, year_field from mytable
where @filter

两个数据集查询都未能保存。我想我可以在数据集查询语句中包含所有不同的 where 子句,但它可能需要不同的参数,但除非我使用 1=1 作为默认值,否则它们怎么可能是空的。我只想使用一个参数。

还有其他想法吗?

谢谢。

【问题讨论】:

  • 只是想了解需求..您希望能够使用相同的参数在四个不同的列上运行查询和过滤..对吗?你能发布一些示例数据和你想要的输出吗?
  • 正确。因此,如果用户选择 2016,where 子句将过滤 year_field 为 2016,如果用户选择 count 200,则 where 子句将过滤 count_field。
  • 只有一个参数还是考虑多个参数?参数条目的前缀是什么?每个选项都需要更具预测性的东西..问题太多..您能否通过更新您的问题来澄清问题中的所有内容

标签: reporting-services ssrs-2008


【解决方案1】:

您的数据集查询必须是有效的 SQL。您可以对数据集使用表达式,并使用 SSRS 表达式语言来生成您需要的 SQL。

类似:

="SELECT * FROM TABLE " + IIF(Value = True," WHERE 'A' = 'B'","")

但是,我认为与它们一起工作很痛苦。它们更难理解,维护时间更长,更容易控制错误。
我发现将参数传递给服务器上的 SQL 存储过程更容易、更安全,尤其是在您使用 TEXT BOX 输入字段时。

【讨论】:

  • 您是否建议在用户进行参数选择时运行整个查询(在值的表达式内)?会试试的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-05-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多