2013-10-09 5 views
0

Я делаю отчет в Cognos Report Studio, и у меня возникли проблемы с получением счета, который мне нужен. Мне нужно подсчитать количество идентификаторов для отдела. Но мне нужно разделить счет между начатыми и завершенными. Если идентификатор встречается более одного раза, его следует считать завершенным. Остальные, конечно же, будут начаты. Поэтому я пытаюсь подсчитать количество входов идентификатора для отдельного идентификатора. Вот запрос, который я сделал в SQl Developer:Cognos: подсчитайте количество вхождений отдельного идентификатора

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. Я пытался делать СЛУЧАЙ TAHT смотрел Лик это (этот код использует основные имена, такие как отдел вместо D.DEPARTMENT_DESC):

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

Я использую счета (отчетливые ID) вместо подсчета (максимум (close_date)). Но результаты все равно будут одинаковыми. «И» - это то место, где я думаю, что его потеряли. Очевидно, что это не правильный способ подсчета случаев. Но я надеюсь, что я рядом. Есть ли способ сделать это с помощью CASE? Или вообще?

--EDIT-- Чтобы сделать мой вопрос более ясно, вот пример:

Скажем, у меня есть эти данные в моей таблице

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

Мой желаемый результат подсчета будет:

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

Это связано с тем, что два разных идентификатора (2 и 5) встречаются более одного раза. Поэтому они считаются завершенными. Те, которые происходят только один раз, считаются Инициированными. Я могу сделать это в SQl Dev, но я не могу понять, как это сделать в Cognos Report Studio. Надеюсь, это поможет лучше объяснить мою проблему.

+0

«Но я не знаю, как перевести ТАГТ в Cognos». Что именно вы подразумеваете под этим? –

+0

Я не знаю, как использовать cognos для выполнения той же задачи, что и в SQL Dev. – woods

+0

В Studio отчета зайдите в область запроса в студию отчетов, удалите элемент SQL и поместите туда запрос. ИЛИ правильно смоделируйте его в Framework Manager, чтобы вы могли просто перетаскивать объекты запроса, и он будет создавать SQL для вас. –

ответ

0

О, я не совсем понял его, исправляя ответ.
Но это все еще проще всего сделать с двумя запросами в Report Studio. Ключевым моментом является то, что вы можете использовать запрос в качестве источника для другого запроса, гарантируя надлежащую группировку и вычисления.

Так что если у вас есть список идентификаторов в таблице в Report Studio создать:
Query 1 с dataitems:

  • ID,
  • COUNT (*) или считать (1), как count_occurences
  • статус (инициированный или завершенный) с формулой: if (count_occurences> 1), затем ('completed') else ('init').

После этого вы создаете запрос 2 с использованием запроса один в качестве источника с помощью всего 2 элементов данных:.

  • [Query1] [Status]
  • графа с формулой: кол ([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

+0

Простите, мне так долго нужно было комментировать. Я не совсем уверен, что вы говорите мне. Но я отредактирую свой вопрос, чтобы помочь очистить. – woods

+0

Обновлен ответ. – ykud

Смежные вопросы