如何统计某列出现的次数?

问题描述 投票:0回答:1

我对 Webi 还很陌生,在创建变量时遇到问题。我正在尝试检查每个实体旧帐号是否有超过 1 个电子邮件地址,以及其中 1 个联系人姓名是否包含“年度报告”。因此,当我将每个实体旧帐号标记为无电子邮件时,只会提取没有联系人姓名且包含“年度报告”的帐号。

在上面的示例中,只有黄色组才应称为无电子邮件。现在他们都没有被拉入电子邮件。我尝试过使用 if 和 match,因为它们是我最熟悉的。

有什么建议吗?

business-objects webi
1个回答
0
投票

有多种方法可以做到这一点。我将给出一个使用两个变量的示例,但您可以轻松地将它们组合成一个。

Has No Email Var=If(Match(Upper([Contact EmailAddress]); "NOEMAIL*"); 1; 0)
Annual Report Contact Name Var=If(Match(Upper([Contact Name]); "ANNUAL REPORT*"); 1; 0)

然后您将应用具有两个组件的报告过滤器...

Has No Email Var = 1 
AND
Annual Report Contact Name Var = 0

让我解释一些事情......

  • Upper函数的目的是Match函数区分大小写。如果您知道您的电子邮件地址始终为小写,那么您可以删除 Upper 功能并将其与“noemail*”匹配。
  • 重要的是,我在要查找的字符串末尾只有一个星号(“*”)。这只会找到相应列值以该字符串开头的匹配项。如果您希望每当在搜索列中的任何位置找到该字符串时它都为 true,则两端都会有星号。
  • 您还可以在查询过滤器中添加限制条件。但这就是事情变得令人困惑的地方。在查询过滤器中,您可以选择“匹配模式”运算符。但是,通配符是不同的(“%”而不是“*”),并且您不会在搜索文本两边加上双引号。所以你会有这样的事情......

    联系电子邮件地址匹配模式 noemail%

    并且

    联系人姓名与年报格式不同%

    我相信您注意到我没有将搜索文本转换为大写。在查询面板中,Web Intelligence 区分大小写,并且可能遵循源数据数据库的区分大小写。我们所有的数据库都不区分大小写,因此如果您的数据库区分大小写,您可能需要稍微解决一下这个问题。或者只是按照我最初布置的方式创建变量和报告过滤器。

    如果您想要单个字符而不是多个字符的通配符(这就是“*”和“%”的作用),您需要使用“?”在变量定义中或查询过滤器中的“_”。

  • 希望这有帮助,

    诺埃尔

© www.soinside.com 2019 - 2024. All rights reserved.