Я унаследовал следующий запрос: -
SELECT
d.dt --date
,fuel --vchar
,SUM(revenue) revenue --number
FROM
(
SELECT
ADD_MONTHS(TRUNC(SYSDATE,'mm'),-ROWNUM + 1)-1 dt
FROM dual
) d
<<SNIP>>
WHERE rn = 1
GROUP BY
d.dt
,fuel;
Возвращает сумму за предыдущий месяц.
Можно ли как-то зациклить это так, чтобы оно возвращало результаты для определенных исторических дней. Статический пример будет: -
SELECT
d.dt --date
,fuel --vchar
,SUM(revenue) revenue --number
FROM
(
SELECT to_date('31-08-2017', 'dd-MM-yyyy') dt
FROM dual
) d
<<SNIP>>
WHERE rn = 1
GROUP BY
d.dt
,fuel;
Мне удалось написать код для генерации интересующих меня дат: -
DECLARE
startdate DATE := TO_DATE('31/08/2016','dd/mm/yyyy');
enddate DATE := trunc(SYSDATE,'MM') - 1;
usedate DATE := enddate;
BEGIN
LOOP
usedate := add_months(usedate,-1);
dbms_output.put_line(usedate);
EXIT WHEN usedate <= startdate;
END LOOP;
END;
... с использованной датой, о которой идет речь, но мне неясно, как использовать эти даты в исходном запросе.