【问题标题】:SSRS: Use NOT LIKE in parameter expressionSSRS:在参数表达式中使用 NOT LIKE
【发布时间】:2016-07-04 02:37:16
【问题描述】:

我有一份使用 3 个参数的报告:

  • @startDate
  • @endDate
  • @品牌

@startDate 和@endDate 参数按预期工作。 @Brand 显示为带有两个选项的下拉菜单:B 和 P

当用户选择 B 时,返回的结果必须与过滤器匹配:LIKE ”%.%” 当用户选择 P 时,返回的结果必须匹配过滤器:NOT LIKE “%.%”

我不确定如何让这个过滤器对 P 起作用。

【问题讨论】:

  • 所以要实现多通配符搜索?
  • 嗨奥尔德林,是的,对应于“B”的记录由一个句号分隔的字符组成。例如。 '1000045.swilde' 和对应于 'P' 的记录没有句号。例如。 '2056789' 因此,当用户选择“B”时,报表必须返回每条记录,其中包含句号。
  • 啊,我明白了,BI 开发人员已经回答了我将推荐的内容。试试他的答案

标签: reporting-services


【解决方案1】:

我正在寻找这个确切问题的答案,但我找不到。我在这里发帖是因为我发现了如何做到这一点。 Btw * 是 SSRS 中的通配符

普通 LIKE 语句的表达式

=iif(variable LIKE "*.*", True, False)

你的 NOT LIKE 表达

=iif(NOT(variable LIKE "*.*"), False, True))

【讨论】:

    【解决方案2】:

    最简单(也是最不优雅)的选择就是在您的 SQL 中添加一个 IF 语句:

    IF @Brand 'B' THEN
       SELECT * FROM Table WHERE Filter LIKE '%.%'
    ELSE
       SELECT * FROM Table WHERE Filter NOT LIKE '%.%'
    

    【讨论】:

    • 嗨,BIDeveloper,我试一试,看看我会得到什么。
    • 我最终在主查询的 WHERE 子句中使用了 CASE 语句,它按预期工作。
    【解决方案3】:

    这对我有用:

    NOT(Fields!YourField.Value like "Closed Portfoy")
    

    【讨论】:

    • 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-11
    相关资源
    最近更新 更多