如何根据 Cognos 中的隐藏条件修复 SQL 个案例语句以进行计数?

How to fix SQL Case Statement for counting based on hidden criteria in Cognos?

我正在尝试根据 Cognos 中的不同标准创建计数。我看过其他帖子,但它们似乎在字段可见时起作用,而我需要在字段不可见时让它起作用。当变量在报告中可见时,我可以使 CASE 语句起作用,但我无法弄清楚为什么当我删除变量时 CASE 语句起作用。

Cognos 报告如下所示:

Title    Test                 Test Status  Count Passed Count Failed Count Withdrawn
Ninja    Physical Aptitude    Passed        50           NULL         NULL
Ninja    Physical Aptitude    Failed        NULL         23           NULL
Ninja    Physical Aptitude    Withdrawn     NULL         NULL         11

通过计数使用以下内容:

CASE WHEN [Test Status (Condensed)] = 'Passed Group'
THEN COUNT(DISTINCT [Applicant ID])
ELSE NULL
END

Count Failed和Count WithDrawn也是如此。有用。但我的目标是让每个标题一行。所以,当我删除 [Test Status (Condensed)] 时,我得到这样的输出:

Title    Test                 Count Passed  Count Failed  Count Withdrawn
Ninja    Physical Aptitude     84            84           84

不再统计每个考试状态的不同申请人,而是统计所有申请人(50+23+11)。

期望的输出是:

Title    Test                 Count Passed  Count Failed  Count Withdrawn
Ninja    Physical Aptitude     50            23           11

你能告诉我我做错了什么吗?如果重要的话,[Test Status (Condensed)] 是一个定义原始 [Test Status] 自定义组的字段。或者,也许我需要完全做些别的事情?

将 CASE 移到 COUNT...

COUNT(DISTINCT CASE WHEN [Test Status] = 'Passed' THEN [Applicant ID] END)

这样想...

  • 对于每个输入行,取申请人id,但只针对'Passed' ELSE NULL是隐含的)
  • 然后计算它们 NULL 被忽略)

然后您可以有一个单独的字段来计算 Failed...

COUNT(DISTINCT CASE WHEN [Test Status] = 'Failed' THEN [Applicant ID] END)