家伙,我有一个要求,列出前一个月的所有日期像下面的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