如何在Webi 4.2中评估多个条件的记录?

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

每条记录包含

webi1

我使用 if 条件创建了一个变量 Category,但它只对记录求值一次。例如,当 ID 24 应同时标识为新的和已终止的时,它仅被标识为新的。

我需要识别每个ID,以确定该州是否是在2022年期间新添加的,以及该州是否是在2022年命名的(类别)。结果表如下所示:

webi2

然后对于每个状态,我需要统计类别数和格式如下:

webi3

我使用 if 条件创建了一个变量 Category,但它只对记录求值一次。例如,当 ID 24 应同时标识为新的和已终止的时,它仅被标识为新的。

=If [EffDate] >='1/1/2022' And [EffDate]<='12/31/2022' Then "New"  ElseIf [ExpDte] >='1/1/2022' And [ExpDte]<='12/31/2022' Then "Termed" Else "NA"

任何解决这个问题的帮助将不胜感激。

report webi
1个回答
0
投票

一个 ID 不可能成为两个东西,所以我将采取一些不同的路径。我将只使用两个标志变量(0 或 1);一个如果 ID 为“新”,另一个如果为“已终止”。

为了获得可以使用的数据集,我执行了以下操作...

  1. 将示例数据输入 Excel
  2. 复制并粘贴到https://www.convertcsv.com/csv-to-sql.htm
  3. 将这些结果复制并粘贴到徒手 SQL 查询中

这是包含该 SQL 语句的 dbfiddle。我必须显式地将 EffDteExpDte 转换为日期,以便我实际上可以与它们进行日期比较。如果您可以在 dbfiddle 中提供 SQL(或者甚至将其发布在您的问题中,如果它不是太长的话),则可以将其放入徒手 SQL 查询中,这对可能回答的人确实有帮助。

无论如何,这是我的表格,其中包含您的数据。

enter image description here

我根据您的数据范围创建了两个变量,其中“1”为真,“0”为假。

Var Is New=Sum(If( [EffDte] >='1/1/2022' And [EffDte]<='12/31/2022'; 1; 0))

Var Is Termed=Sum(If([ExpDte] >='1/1/2022' And [ExpDte]<='12/31/2022'; 1; 0))

enter image description here

我不需要在这个阶段对它们求和,但我会在下一个阶段对它们求和,而且这里不会有什么坏处,所以我在这个阶段这样做。

现在我需要一个交叉表来开始将其组合在一起。我将 State 作为列标题。我必须在交叉表的最后一行下方添加一行,以便我们有两行,因为我们没有实际的 Category 变量。它应该看起来像这样...

enter image description here

接下来添加“类别”列标题以及“新建”和“术语”行标题,以便您的表格看起来像这样...

enter image description here

最后,您只需将 Var Is New 和 Var Is Termed 放到相应的行中,WebI 就会完成其余的工作。

enter image description here

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