Мне нужно создать запрос, чтобы сделать следующий, с данными с такими же КЛИЕНТАМИ, ДАТАМИ и СОСТОЯНИЕМ, чтобы выбрать максимальную дату выполнения и подсчитать ее. Я думаю, что с примером будет легче разобраться.SQL - COUNT DISTINCT
Из этой таблицы, например,
Client Status Date Date Execution
------- ---------- ------ ---------------------
AB 100 22/07/2014 23/07/2014 21:35
AB 100 22/07/2014 23/07/2014 05:00
AB 100 22/07/2014 23/07/2014 19:32
AB 100 23/07/2014 24/07/2014 04:15
AB 100 23/07/2014 24/07/2014 20:19
BC 400 24/07/2014 25/07/2014 20:56
BC 400 24/07/2014 25/07/2014 03:36
BC 400 24/07/2014 25/07/2014 17:58
BC 400 24/07/2014 25/07/2014 14:51
Я хотел бы получить,
Client Status Date Date Execution COUNT(Distint)
------- ---------- ------ --------------------- ----------------------
AB 100 22/07/2014 23/07/2014 21:35 3
AB 100 23/07/2014 24/07/2014 20:19 2
BC 400 24/07/2014 25/07/2014 20:56 4
На данный момент я сделал этот запрос, чтобы сделать поиск выполнения даты макс, но я не знаю, как сделать для COUNT (DISTINCT).
SELECT ip.CLIENT, cps.DATE, cpst.STATUS, cpst.DATE_EXE
FROM IP ip, CPS cps, CPST cpst INNER JOIN (SELECT PF_GUID, MAX(DATE_EXE)
FROM CTR_PORTFOLIOS_TRG
GROUP BY PF_GUID) cpst2 ON cpst.PF_GUID=cpst2.PF_GUID
WHERE ip.PF_ID = cps.PF_ID AND cps.PF_GUID = cpst.PF_GUID
AND cpst.STATUS IN (100,400,550)
AND cps.DATE BETWEEN TO_DATE('01/07/2014', 'DD/MM/YYYY') AND TO_DATE('30/09/2014', 'DD/MM/YYYY')
ORDER BY CLIENT, STATUS, DATE
Любая помощь, пожалуйста, заполните запрос? Большое спасибо
Для чего нужна платформа базы данных? Пожалуйста, отметьте соответствующим образом. – OldProgrammer
Это выглядит как Oracle или Postgres из-за использования 'to_date()'. –
Да, его Oracle – abetitou