Ребята у меня есть требование, чтобы перечислить все даты предыдущего месяца, как ниже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
)
выделенный текст
ваш запрос принимает 17sec на прод окр. также, если u посоветует ошибку погрешности. –
hmm ... вам может потребоваться заменить all_objects чем-то другим, в идеале - таблицей с 31 записями –
об ошибке ... COLUMN - это ключевое слово, попробуйте '' COLUMN "' вместо этого; то же самое с '' TYPE '' –