傢伙,我有一個要求,列出前一個月的所有日期像下面的Oracle SQL查詢列出前一個月的所有日期
20101201
20101202
20101203
20101204
20101205
..
..
..
..
..
..
..
..
201
請讓我知道是否有更好的方式比這個查詢做。
select TO_CHAR(TRUNC(SYSDATE,'MM')-1,'YYYYMMDD')-(level-1) as
EACH_DATE from dual A connect by level
< (TO_NUMBER(TO_CHAR(TRUNC(SYSDATE,'MM')-1,'DD'))+1)
也請讓我知道這個查詢它說問題 「缺少右括號」
SELECT /*+ PARALLEL (A,8) */ /*+ DRIVING_STATE */
TO_CHAR(TRUNC(TRUNC(SYSDATE,'MM')-1,'MM'),'MONYYYY') "MONTH", TYPE AS "TRAFF", COLUMN, A_COUN AS "A_COUNT",COST FROM DATA_P B WHERE EXISTS
(
select TO_NUMBER(TO_CHAR(TRUNC(SYSDATE,'MM')-1,'YYYYMMDD')-(level-1)) EACH_DATE
from dual A connect by level < TO_NUMBER(TO_CHAR(TRUNC(SYSDATE,'MM')-1,'DD')+1)
WHERE A.EACH_DATE = B.DATE order by EACH_DATE ASC
)
強調文本
查詢呈現PROD ENV 17sec。同樣,如果你會提出錯誤的建議。 – 2011-01-10 08:35:08
嗯...你可能想用別的東西替換all_objects,理想情況下是一個31個記錄的表 – 2011-01-10 08:40:08