首页 文章

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

提问于
浏览
0

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

Count Passed使用以下内容:

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

Count Failed和Count WithDrawn也是如此 . 有用 . 但我的目标是每个 Headers 获得一行 . 所以,当我删除 [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] 中自定义组的字段 . 或者我可能需要完全做其他事情?

1 回答

  • 0

    将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)
    

相关问题