SQL Group By - Zählen der Datensätze pro Monat / Jahr, Fehler beim Einfügen - NOT A VALID MONTH

8

Ich habe diese Beispieldaten:

%Vor%

Wenn ich diese Daten abfrage, möchte ich alle Datensätze in einem bestimmten Monat aggregieren. Das Ergebnis der Abfrage würde wie folgt aussehen:

%Vor%

Als eine Auswahl, die einfach genug ist:

%Vor%

Diese Abfrage gibt mir Daten in dem Format, das ich möchte, aber mein Problem ist, dass wenn ich gehe, um das in eine neue Pivot-Tabelle einzufügen, bekomme ich einen Fehler, weil die to_char () in der SELECT-Anweisung in ein DATETIME platziert wird Spalte (Fehler: ORA-01843 - kein gültiger Monat)

Wenn ich to_char () im select to to_date () ändere, funktioniert es immer noch nicht (gleicher Fehler, ORA-01843 - kein gültiger Monat):

%Vor%

Gibt es Vorschläge, wie Sie diese Abfrage so ändern können, dass ich das Ergebnis in eine neue Tabelle einfügen kann, deren Spalte "JOINED" vom Typ DATETIME ist?

Vielen Dank im Voraus für irgendwelche Tipps / Vorschläge / Kommentare!

    
Pat Grady 11.07.2012, 18:12
quelle

2 Antworten

14

Sie können etwas wie to_date('01/'||trunc(joined), 'DD/MM/YYYY') machen, wodurch es zuerst in ein gültiges Datum umgewandelt wird. Sie müssen nur entscheiden, ob Sie den ersten oder letzten Tag des Monats verwenden möchten (der letzte ist komplizierter)

Eine andere Option ist die Verwendung der EXTRACT-Funktion:

%Vor%

und dann können Sie einfach die Spalte dt auswählen und einfügen

    
jle 11.07.2012, 18:25
quelle
5

Sie sollten die Funktion trunc verwenden, um das Datum auf den Ersten des Monats zu kürzen. Dadurch entfällt die Umwandlung des Datums in eine Zeichenfolge und die Notwendigkeit, die Zeichenfolge in ein Datum zurück zu konvertieren.

%Vor%     
Justin Cave 11.07.2012 18:40
quelle

Tags und Links