2013-12-12 64 views
0

我已經定義Oracle SQL Developer中使用以下查詢一個用戶自定義報告用戶定義的報表(SQL Developer)中的時間戳值每月運行:自動更新在

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 

有什麼辦法來自動更新SUMMARY_TIMESTAMP在當月的基礎上,而不是手動改變它?

+0

當然,使用SYSDATE功能。例如,如果當前月份是12,那麼從2013年1月1日 - 2013年12月1日? – OldProgrammer

回答

1

也許有做這一個乾淨的方式,但一隻想到是這樣的添加到您的查詢:

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 
+0

很好的答案,這個按預期工作!的確如此 – paranza