Reputation: 1431
I have defined an User Defined Report in Oracle SQL Developer with the following query to be run monthly:
SELECT TO_CHAR(SUMMARY_TIMESTAMP,'YYYY-MM-DD') AS day, Count(ID) AS row_count
FROM S_SEARCH_SUMMARIES
WHERE SUMMARY_TIMESTAMP > '01-Nov-13' AND SUMMARY_TIMESTAMP < '01-Dec-13'
AND SOURCE_INSTITUTION = 'My Institution'
GROUP BY TO_CHAR(SUMMARY_TIMESTAMP,'YYYY-MM-DD')
ORDER BY day DESC
Is there any way to automatically update the SUMMARY_TIMESTAMP
on the basis of the current month, instead of manually changing it?
Upvotes: 0
Views: 151
Reputation: 12169
Maybe there is a cleaner way to do this, but one thought is to add something like this to your query:
WITH dates
AS (SELECT TO_DATE (
EXTRACT (YEAR FROM SYSDATE) || '-' || EXTRACT (MONTH FROM
SYSDATE) || '-01',
'YYYY-MM-DD')
DT_END,
TO_DATE ( (EXTRACT (YEAR FROM ADD_MONTHS (SYSDATE, -1))) ||
'-' || EXTRACT (MONTH FROM ADD_MONTHS (SYSDATE, -1))
|| '-01',
'YY-MM-DD')
DT_START
FROM DUAL)
SELECT TO_CHAR (SUMMARY_TIMESTAMP, 'YYYY-MM-DD') AS day,
COUNT (ID) AS row_count
FROM S_SEARCH_SUMMARIES, dates
WHERE SUMMARY_TIMESTAMP > dates.DT_START
AND SUMMARY_TIMESTAMP < dates.DT_END
AND SOURCE_INSTITUTION = 'My Institution'
GROUP BY TO_CHAR (SUMMARY_TIMESTAMP, 'YYYY-MM-DD')
ORDER BY day DESC
Upvotes: 1