如何根据 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)
我正在尝试根据 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)