Hallo,
Folgende Frage befasst sich mit folgender Datenbank: http://sql.idv.edu -> unter interaktive Abfrage ist die Datenbankstruktur angegeben.
Also ich brauche eine Übersicht der Umsätze je Monat, dass bekomm ich auch noch leicht hin, aber das prob is, ich brauch auch eine Jahres Spalte und sobald ich die dazunehme zerreist es mir die Umsätze da ich dann auch die Jahresspalte im Group by Statement brauche. Im moment schaut mein Statement so aus:
SELECT Month(Auftrag.Datum) AS Monat, Round(Sum(Auftragspos.Menge*Buch.Preis),2) AS “Umsatz je Monat”
FROM Auftrag, Auftragspos, Buch
WHERE Auftrag.Nr=Auftragspos.Auftragsnummer
AND Auftragspos.Buchnummer=Buch.Nr
GROUP BY Month(Auftrag.Datum)
Sobald ich hier nun noch die Jahresspalte integrieren will zerreist es mir das Ergebnis komplett:
SELECT Year(Auftrag.Datum) AS Jahr, Month(Auftrag.Datum) AS Monat, Round(Sum(Auftragspos.Menge*Buch.Preis),2) AS “Umsatz je Monat”
FROM Auftrag, Auftragspos, Buch
WHERE Auftrag.Nr=Auftragspos.Auftragsnummer
AND Auftragspos.Buchnummer=Buch.Nr
GROUP BY Month(Auftrag.Datum), Auftrag.Datum
Problem ist, der Server Unterstützt kein to_char glaub ich. hab mehrere Varianten ausprobiert, gibt immer nur den Fehler: ERROR: Falsche Eingabe —> FUNCTION buch.to_char does not exist. aus Gibts nichts einfaches wo ich aus so einem Datumsformat: yyyy-mm-dd 00:00:00 einfach nur yyyy und mm raushole?
Sollte man meinen, aber leider implementiert keine Datenbank den SQL Standard vollständig.
Und manche - wie MySQL - ignorieren ihn schlichtweg in weiten Bereichen und andere - wie Postgres - versuchen sehr eng am Standard zu bleiben.
Und gerade bei Datumsfunktionen bzw. beim Formatieren von einem Datum unterscheiden sie sich sehr - nicht zuletzt deswegen weil es dafür keinen Standard gibt.
Das Beispiel von akretschmer ist im Übrigen (mit Ausnahme der Funktion to_char) Standard SQL.