Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi SQL-Abfrage nach Monat gruppieren (https://www.delphipraxis.net/73778-sql-abfrage-nach-monat-gruppieren.html)

norbert3 23. Jul 2006 23:08

Datenbank: ABS • Version: 5.05 • Zugriff über: DataModule

SQL-Abfrage nach Monat gruppieren
 
Hey Leute,

ich komme einfach nicht weiter. :wall:

Ich habe ein DBChart-Modul eingesetzt und es mit einer Abfrage verbunden. Dies funktioniert soweit auch.
Delphi-Quellcode:
with ABSQuery1 do
  begin
    ABSQuery1.Close;
    ABSQuery1.SQL.Text := 'SELECT t1."Datum", SUM(t1."GesamtNetto") AS "sumGesamtNetto"
FROM "tblRechnung" t1 
WHERE (t1."Datum" Like "%"+:Jahr)
GROUP BY t1."Datum", t1."GesamtNetto"
HAVING ((EXTRACT(MONTH FROM t1."Datum")))';
    ABSQuery1.ParamByName('Jahr').asString := cboJahr.Text;
    ABSQuery1.Open;
   end
Nun möchte ich aber, dass die Werte der einzeln angezeigten Tage summiert und das auch noch pro Monat ausgegeben werden soll. (Gesammtsumme pro Monat)

Hat jemand eine Idee?

Mfg Norbert

mkinzler 24. Jul 2006 05:28

Re: SQL-Abfrage nach Monat gruppieren
 
SQL-Code:
GROUP BY EXTRACT(MONTH FROM t1."Datum"), t1."GesamtNetto"

marabu 24. Jul 2006 07:24

Re: SQL-Abfrage nach Monat gruppieren
 
Hallo Markus,

ABS erlaubt keine Ausdrücke in der GROUP BY Klausel - besser so:

SQL-Code:
SELECT EXTRACT(MONTH FROM datum) AS monat, SUM(gesamtnetto) FROM rechnungen GROUP BY monat ORDER BY monat DESC
Grüße vom marabu

mkinzler 24. Jul 2006 08:15

Re: SQL-Abfrage nach Monat gruppieren
 
Ich kenn mich halt mit diesem DBMS nicht aus.

norbert3 24. Jul 2006 18:04

Re: SQL-Abfrage nach Monat gruppieren
 
Hey Leute,

danke an alle, ich habe es nun so eingebaut und läuft sehr gut!! :mrgreen:
Delphi-Quellcode:
procedure TfrmUmsatz.FormActivate(Sender: TObject);
begin
cboJahr.Text := FormatDateTime('yyyy',date);
with ABSQuery1 do
  begin
    ABSQuery1.Close;
    ABSQuery1.SQL.Text := 'SELECT EXTRACT(MONTH FROM datum) AS monat, SUM(gesamtnetto)AS sumGNetto FROM tblRechnung WHERE (Datum Like "%"+:Jahr) GROUP BY monat ORDER BY monat DESC';
        ABSQuery1.ParamByName('Jahr').asString := cboJahr.Text;
    ABSQuery1.Open;
   end

end;
mfg Norbert

marabu 24. Jul 2006 21:53

Re: SQL-Abfrage nach Monat gruppieren
 
Nur ein wenig Kosmetik:

Delphi-Quellcode:
procedure TfrmUmsatz.FormActivate(Sender: TObject);
begin
  with ABSQuery1 do
  begin
    SQL.Text := 'SELECT EXTRACT(MONTH FROM datum) AS monat, '
              + 'SUM(gesamtnetto) AS sumGNetto FROM tblRechnung '
              + 'WHERE EXTRACT(YEAR FROM datum) = :jahr) '
              + 'GROUP BY monat ORDER BY monat DESC';
    Params.ParamValues['jahr'] := CurrentYear;
    Open;
  end;
end;
Vielleicht solltest du nochmal prüfen, ob das Ereignis OnActivate() der Form die optimale Stelle für die Query ist.

Gute Nacht

marabu


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:27 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz