0

我正在 Cognos Report Studio 中制作报告,但在获取所需的计数时遇到了一些麻烦。我需要做的是计算一个部门的 ID 数量。但我需要在启动和完成之间分配计数。如果一个 ID 出现不止一次,则将其视为已完成。其他的,当然,将被启动。所以我试图计算一个不同 ID 的 ID 出现次数。这是我在 SQl Developer 中所做的查询:

SELECT
COUNT((CASE WHEN COUNT(S.RFP_ID) > 8 THEN MAX(CT.GCT_STATUS_HISTORY_CLOSE_DT) END)) AS "Sales Admin Completed"
,COUNT((CASE WHEN COUNT(S.RFP_ID) = 8 THEN MIN(CT.GCT_STATUS_HISTORY_OPEN_DT) END)) as "Sales Admin Initiated"
FROM 
ADM.B_RFP_WC_COVERAGE_DIM S
JOIN ADM.B_GROUP_CHANGE_REQUEST_DIM CR 
ON S. RFP_ID = CR.GCR_RFP_ID 
JOIN ADM.GROUP_CHANGE_TASK_FACT CT 
ON CR.GROUP_CHANGE_REQUEST_KEY = CT.GROUP_CHANGE_REQUEST_KEY 
JOIN ADM.B_DEPARTMENT_DIM D 
ON D.DEPARTMENT_KEY = CT.DEPARTMENT_RESP_KEY
WHERE CR.GCR_CHANGE_TYPE_ID = '20'
AND S.RFP_LOB_IND = 'WC'
AND S.RFP_AUDIT_IND = 'N'
AND CR.GCR_RECEIVED_DT BETWEEN '01-JAN-13' AND '31-DEC-13'
AND D.DEPARTMENT_DESC = 'Sales'
AND CT.GCT_STATUS_IND = 'C' 
GROUP BY S.RFP_ID ;

现在这行得通。但我不确定如何将 taht 翻译成 Cognos。我尝试做一个 CASE taht 看起来像这样(此代码使用基本名称,例如 dept 而不是 D.DEPARTMENT_DESC):

 CASE WHEN dept = 'Sales' AND count(ID for {DISTINCT ID}) > 1 THEN count(distinct ID)END)

我正在使用 count(distinct ID) 而不是 count(maximum(close_date))。但无论如何,结果都是一样的。“AND”是我认为它丢失的地方。这显然不是计算出现次数的正确方法。但我希望我很接近。有没有办法用 CASE 做到这一点?还是根本没有?

--EDIT-- 为了让我的问题更清楚,这里有一个例子:

假设我的表中有这些数据

ID
---
1
2
3
4
2
5
5
6
2

我想要的计数输出是:

Initiated   Completed
---------   ---------
    4           2

这是因为两个不同的 ID(2 和 5)不止一次出现。因此它们被视为已完成。仅发生一次的算作已启动。我可以在 SQl Dev 中执行此操作,但我无法弄清楚如何在 Cognos Report Studio 中执行此操作。我希望这有助于更好地解释我的问题。

4

1 回答 1

0

哦,原来我没完全明白,修改答案。
但在 Report Studio 中使用 2 个查询仍然是最简单的。关键时刻是您可以将一个查询用作另一个查询的源,从而保证正确的分组依据和计算。

因此,如果您在 Report Studio 中创建的表中有 ID 列表:
带有数据项的查询 1:

  • ID,
  • count(*) 或 count (1) 作为 count_occurrences
  • 状态(已启动或已完成),公式为:if (count_occurences > 1) then ('completed') else ('initiated')。

之后,您使用查询 1 作为源创建查询 2,其中只有 2 个数据项:

  • [查询1].[状态]
  • 使用公式计数:count([Query1].[ID])

这会给你你想要的结果。
这是关于如何嵌套查询的 doco 链接:http: //pic.dhe.ibm.com/infocenter/cx/v10r1m0/topic/com.ibm.swg.ba.cognos.ug_cr_rptstd.10.1.0.doc/c_cr_rptstd_wrkdat_working_with_queries_rel .html?path=3_3_10_6#cr_rptstd_wrkdat_working_with_queries_rel

于 2013-10-09T23:21:47.773 回答