Cognos:计算不同ID的出现次数

时间:2013-10-09 18:45:56

标签: count case distinct cognos

我正在使用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 ;

现在这个有效。但我不确定如何将这些转换成Cognos。我试过做一个CASE taht看起来像这个(这个代码使用的是基本名称,如dept而不是D.DEPARTMENT_DESC):

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

我使用count(不同的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中执行此操作。我希望这有助于更好地解释我的问题。

1 个答案:

答案 0 :(得分:0)

哦,我最初并没有得到它,修改答案。
但在Report Studio中使用2个查询仍然是最简单的。关键时刻是您可以使用查询作为另一个查询的来源,保证正确的分组和计算。

因此,如果您在Report Studio的表中有ID列表,则创建:
使用dataitems查询1:

  • ID,
  • count(*)或count(1)as count_occurences
  • 状态(已启动或已完成),公式为: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