Jungs, die ich habe eine Verpflichtung, alle Termine des Vormonats zur Liste wie untenOracle SQL-Abfrage alle Termine des Vormonats zur Liste
20101201
20101202
20101203
20101204
20101205
..
..
..
..
..
..
..
..
201
bitte lassen Sie mich wissen, ob eine bessere Möglichkeit als diese Abfrage zu tun .
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)
Auch lassen Sie es mich wissen, das Problem mit dieser Abfrage sagt es "fehlende rechte Klammer"
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
)
Text betont
Ihre Anfrage übernimmt prod env 17sec. Auch wenn Sie über den Paranthesisfehler beraten würden. –
hmm ... möchten Sie vielleicht alle_Objekte durch etwas anderes ersetzen, idealerweise eine Tabelle mit 31 Datensätzen –
über den Fehler ... COLUMN ist ein Schlüsselwort, versuchen Sie '" COLUMN "' stattdessen; Gleiches mit '" TYPE "' –