0
我是Oracle SQL中的新手。我试图显示门票的名称,关闭和打开门票的数量和日期。但我无法得到正确的查询。如何将数据分组到一列中?
所需的输出:
01/20/2014, User management, 20, 15
查询:
SELECT 'Data'
||','||TO_CHAR(D.DTIME_DAY,'MM/dd/yyyy')
||','||q.name -- as ticket
||','||NVL(o.CNT_OPENED,0) --as cnt_opened
||','||NVL(c.CNT_CLOSED,0) --as cnt_closed
FROM OWNER_DWH.DC_DATE d
LEFT JOIN (
SELECT q.name, count(q.name), TRUNC(t.CREATE_TIME) as report_date, count(*) as cnt_opened
FROM APP_ACCOUNT.OTRS_TICKET t
left join app_account.otrs_queue q
ON q.ID = t.QUEUE_ID
WHERE t.CREATE_TIME BETWEEN SYSDATE -7 AND SYSDATE -1
and t.queue_id not in (63, 61, 69, 59, 58, 60, 56, 64, 65, 23, 67, 68, 57)
GROUP BY q.name, TRUNC(t.CREATE_TIME)
) o ON d.DTIME_DAY=o.REPORT_DATE
LEFT JOIN (
SELECT q.name, count(q.name), TRUNC(t.CLOSE_TIME) as report_date,count(*) AS cnt_closed
FROM APP_ACCOUNT.OTRS_TICKET t
left join app_account.otrs_queue q
ON q.ID = t.QUEUE_ID
WHERE t.CLOSE_TIME BETWEEN SYSDATE -7 AND SYSDATE -1
and t.queue_id not in (63, 61, 69, 59, 58, 60, 56, 64, 65, 23, 67, 68, 57)
GROUP BY q.name, TRUNC(t.CLOSE_TIME)
) c ON D.DTIME_DAY=c.REPORT_DATE
WHERE d.DTIME_DAY BETWEEN SYSDATE -7 AND TRUNC(SYSDATE) -1
AND TRUNC(d.DTIME_DAY)= d.DTIME_DAY
ORDER BY D.DTIME_DAY;
如果我想对数据进行分组?
实例:在一列,让我们说我有:
E-mail management
E-mail management::Add user e-mail
E-mail management::Add new Outlook distribution list
E-mail management::Add new Outlook shared mailbox
E-mail management::Add new SA e-mail (Zimbra account)
POS::POS issue - need paper
POS::POS issue - internet connection problems
有电子邮件管理的所有名称将组作为电子邮件的管理和具有POS将组作为POS所有名称。
欲望输出:
02/10/2014, E-mail, 4
02/10/2014, POS, 2
如何做到这一点?
请帮帮我。先谢谢你。
我如何能显示日期本身? – user3317540
您必须使用聚合函数,例如'min()'或'list_agg()'。 –
该怎么做? – user3317540