У меня есть таблица, определенная в схеме Oracle11g, как эта
Txn_summ_dec
=================
id
currentdate
resource_id
user_id
trans_id
eventdescptn
каждый ресурс имеет разные описания событий.
Я даю диапазон дат (максимум 1 месяц или меньше) и resource_id и хочу получить различное количество всех пользователей для данного идентификатора ресурса, сгруппировать по currentdate, eventdescptn
Итак, у меня есть следующий запрос
SELECT COUNT(DISTINCT(txn_summ_dec.user_id)) as dusers, currentDate, eventdescptn
FROM Txn_summ_dec
WHERE resource_id = 1
AND currentdate BETWEEN TO_DATE('2011-12-01', 'YYYY-MM-DD')
AND TO_DATE('2011-12-31', 'YYYY-MM-DD')
GROUP BY currentdate, eventdescptn
и это правильно дает мне результат ниже
dusers currentdate eventdescptn
182 12/01/2011 00:00:00 Save
33 12/04/2011 00:00:00 Save
98 12/01/2011 00:00:00 Read
22 12/30/2011 00:00:00 Write
Я хочу получить результат в следующем формате:
Из запроса
с указанным диапазоном дат предположим, что с 5-го по 5-е число месяца (или меньше) я хочу получить результаты для всех дат в диапазоне для всех eventdescptn ресурса. Если для определенной даты в диапазоне нет результата, для определенного события descptn тогда должна быть эта запись в наборе результатов со значением 'dusers' = 0
таким образом, если ресурс имеет 3 различных события события (Сохранить, Чтение, Запись) и диапазон дат составляет 5–30 числа месяца, то в наборе результатов должно быть в общей сложности 26X3 = 78 записей.
Как мне написать запрос для этого?
Также мне нужно будет преобразовать его в спящий режим позже .. но SQL для начала хорошо
Заранее спасибо