Ich bekomme "Invalid Number"Oracle sqlplus Abfrage
Kann mir bitte jemand sagen, was ich hier falsch mache ??? 'YYYY-MM':
select TO_CHAR(a.START_TIME,'YY-MON-DD HH24') as START_TIME,
count(*) AS NbOperations,
SUM(CASE WHEN OPERATION_RESULT=0 THEN 1 ELSE 0 END) AS Success,
SUM(CASE WHEN OPERATION_RESULT=200 THEN 1 ELSE 0 END) AS Cancel,
SUM(CASE WHEN OPERATION_RESULT=203 THEN 1 ELSE 0 END) AS AppletInternalError,
SUM(CASE WHEN OPERATION_RESULT=406 THEN 1 ELSE 0 END) AS TimeoutWaitForCard,
SUM(CASE WHEN OPERATION_RESULT=413 THEN 1 ELSE 0 END) AS BillingError,
SUM(CASE WHEN OPERATION_RESULT=1000 THEN 1 ELSE 0 END) AS ABANDONNED,
SUM(CASE WHEN OPERATION_RESULT=1004 THEN 1 ELSE 0 END) AS ABANDON_FOR_NEW_OPERATION,
SUM(CASE WHEN OPERATION_RESULT NOT IN (0,200,203,406,413,1000,1004) THEN 1 ELSE 0 END) AS NbOthers
from MyTable1 a,
MyTable2 b
where OPERATION_TYPE in (2,3,4,5)
and a.OPERATION_TYPE=b.OPERATION_ID
and a.START_TIME >= to_timestamp('&1', 'YYYY-MM')
and a.START_TIME < to_timestamp('&2', 'YYYY-MM') + interval '1' month
group by TO_CHAR(a.START_TIME,'YY-MON-DD HH24')
order by TO_CHAR(START_TIME,'YY-MON-DD HH24');
@scaisEdge, diese (Apostroph um 1) ist sicherlich ** nicht ** ein Grund, weil Syntax einfache Anführungszeichen erfordert beim Umgang mit Intervalle. Lesen Sie "Intervallliterale" in der Dokumentation, hier: https://docs.oracle.com/cd/B19306_01/server.102/b14200/sql_elements003.htm#i38598. Was ist der Grund? Keine Ahnung; Wir haben weder Tabellenbeschreibung noch Daten, daher ist es schwer zu erraten. Sie haben es versucht, aber es ist fehlgeschlagen :) – Littlefoot
Was hat das speziell mit SQL * Plus zu tun, außer den Substitutionsvariablen? Welche Werte verwenden Sie für diese? Sie müssten etwas wie 2018-01 sein (keine Anführungszeichen). –
Übrigens, willst du wirklich 'nach TO_CHAR sortieren (START_TIME, 'YY-MON-DD HH24')'? Das wird April und August vor Februar und Januar (unter der Annahme englischer Monatsnamen) geben. –