1. In einer Tabelle sind Datensätze mit den Feldern Datum und Umsatz
diese Felder möchte ich nach Monat gruppieren.
Mit dem Statement
select
extract( month from datum) as monat,
sum(ums) as umsatz
from umsatz.db
group by monat
funktioniert es leider nicht
Weiß jemand den richtigen Syntax ?
2. Wenn ich GROUP BY verwende, sehe ich im DBGrid nur die Datensätze, die
zu der jeweiligen Gruppe gehören.
Gibt es eine Möglichkeit noch andere Datenfelder sichtbar zu machen ?
select
extract( month from datum) as monat,
sum(ums) as umsatz
from umsatz.db
group by extract( month from datum)
sollte funktionieren (geht jedenfalls mit ORACLE)
> 2. Wenn ich GROUP BY verwende, sehe ich im DBGrid nur die Datensätze, die
> zu der jeweiligen Gruppe gehören.
> Gibt es eine Möglichkeit noch andere Datenfelder sichtbar zu machen ?
welche denn, die ohne Monat ?
>
> sollte funktionieren (geht jedenfalls mit ORACLE)
Leider mit Paradox nicht.
> > 2. Wenn ich GROUP BY verwende, sehe ich im DBGrid nur die Datensätze,
die
> > zu der jeweiligen Gruppe gehören.
> > Gibt es eine Möglichkeit noch andere Datenfelder sichtbar zu machen ?
> welche denn, die ohne Monat ?
Zum Beispiel ein Feld Namens "Kundennummer", klar andere Felder müssen in
der Gruppe
nicht unbedingt eindeutig sein, aber in meinem Anwendungsfall ist das
gegeben.
Mir würde es genügen, wenn die Werte des 1. Datensatzes in den zusätzlichen
Felder ausgegen wird.
> Zum Beispiel ein Feld Namens "Kundennummer", klar andere Felder müssen in
> der Gruppe
> nicht unbedingt eindeutig sein, aber in meinem Anwendungsfall ist das
> gegeben.
> Mir würde es genügen, wenn die Werte des 1. Datensatzes in den
zusätzlichen
> Felder ausgegen wird.
Bei Abfragen mit Gruppierung müssen alle angezeigten Felder in der GROUP BY
clausel enthalten sein.
Das wuerde dann jedoch fuer jeden Monat und jede Kundennummer einen
Datensatz ergeben.
In einem Formolar zur Datenanzeige koennte man ja sonst eine zweite Abfrage
plazieren oder eine master-detail-Abfrage installieren.
hope this helps
>select
>extract( month from datum) as monat,
>sum(ums) as umsatz
>from umsatz.db
>group by monat
>>
>funktioniert es leider nicht
Ich habe leider keine passende Tabelle zur Hand.
>Weiß jemand den richtigen Syntax?
Ist es denn ein Syntax-Problem? Bekommst Du denn einen ordentliche
Fehler?
Ich könnte mir eher vorstellen, daß das GROUP BY auf die mit EXTRACT
erzeugte Spalte vielleicht nicht funktioniert. Dann hülfe nur eine
extra (echte, redundante) Spalte Monat.
>2. Wenn ich GROUP BY verwende, sehe ich im DBGrid nur die Datensätze, die
>zu der jeweiligen Gruppe gehören.
>Gibt es eine Möglichkeit noch andere Datenfelder sichtbar zu machen?
Das verstehe ich nicht. Du siehst die Felder, die den Gruppenschlüssel
bilden - in diesem Fall "Monat" und die anderen, die Du selektiert
hast - hier den Gesamtumsatz. Natürlich kannst Du auch noch mehr
Felder dazuselektieren, aber sie müssen entweder im GROUP BY
auftauchen, oder durch Aggregatfunktionen berechnet sein. Also wäre
SELECT Monat,Sum(Ums) AS GesamtUmsatz,Count(Ums) AS Anzahl_Umsaetze
FROM Umsatz
GROUP BY Monat;
gültig.
Du kannst aber nicht einfach etwas machen wie
SELECT Monat,Name FROM Umsatz GROUP BY Monat;
Weil nicht definiert wäre, _welcher_ Name-Wert hier gemeint ist. Du
hast dann zwei Möglichkeiten: Entweder Du gruppierst auch nach den
gleichen Namen (GROUP BY Monat,Name), oder Du setzt ein Aggregat drum.
Zum Beispiel MIN(Name), dann bekommst Du eben den lexikalisch
kleinsten Namen angezeigt - macht hier nicht viel Sinn, ich weiß :-).
Ciao, MM