SQL-Group By - Buchführung pro Monat/Jahr, Fehler auf einfügen - KEIN GÜLTIGER MONAT
Ich habe dieses Beispiel Daten:
Country | Members | Joined
USA | 250 | 1/1/2012
USA | 100 | 1/8/2012
Russia | 75 | 1/20/2012
USA | 150 | 2/10/2012
Wenn ich die Abfrage dieser Daten möchte ich sammeln Sie alle Datensätze in einem bestimmten Monat. Das Ergebnis der Abfrage würde wie folgt Aussehen:
Country | Members | Joined
USA | 350 | 1/2012
Russia | 75 | 1/2012
USA | 150 | 2/2012
Als ein auswählen, ist einfach genug:
select country, count(*) as members , to_char(trunc(joined), 'MM-YYYY')
from table
group by country, to_char(trunc(joined), 'MM-YYYY')
Diese Abfrage gibt mir die Daten in das format, das ich will, aber mein Problem ist, dass wenn ich gehe zu einfügen, die in eine neue pivot-Tabelle bekomme ich eine Fehlermeldung, da die to_char() in der select-Anweisung wird in eine DATETIME-Spalte ist (Fehler: ORA-01843 - kein Gültiger Monat)
Wenn ich das to_char() in der wählen Sie zu to_date() , es funktioniert immer noch nicht (gleiche Fehlermeldung ORA-01843 - kein Gültiger Monat):
select country, count(*) as members, to_date(trunc(joined), 'MM-YYYY')
from table
group by country, to_date(trunc(joined), 'MM-YYYY')
Irgendwelche Vorschläge, wie man diese Abfrage ändern, so dass ich legen Sie das Ergebnis in eine neue Tabelle, deren "BEIGETRETEN" - Spalte ist vom Typ DATETIME?
vielen Dank im Voraus für irgendwelche Tipps/Vorschläge/Kommentare!
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie etwas tun, wie
to_date('01/'||trunc(joined), 'DD/MM/YYYY')
, die würde schalten Sie es in einen gültigen Datum-ersten.Sie brauchen nur zu entscheiden, ob Sie die ersten oder letzten Tag des Monats (der Letzte ist komplizierter)
Andere Möglichkeit ist die Verwendung der EXTRACT-Funktion:
und dann so ab, man konnte wählen Sie einfach die dt-Spalte und legen Sie es
Sollten Sie mit Hilfe der
trunc
Funktion zum abschneiden des Datums auf die erste des Monats. Das verhindert die Umwandlung des Datums in einen string und die Notwendigkeit, konvertieren Sie die Zeichenfolge wieder in ein Datum.