![]() |
DateTime nach Wochentag gruppieren
Hi folk,
aus einer SQL-Abfrage enstehend, habe ich mehrere Objekte im DateTime-Format. Wie kann man das so gruppieren, dass die Wochentage zusammengefasst und als solche angezeigt werden? Abgefragt werden die Anzahl der Messwerte und das Datum: in etwa so:
Delphi-Quellcode:
Select sum(anzahl) FROM messwerte WHERE indate > :MD1
|
Re: DateTime nach Wochentag gruppieren
Welches DBMS? AFAIK gibt es da keinen standardisierten SQL-Befehl für (ich kann mich aber auch irren).
|
Re: DateTime nach Wochentag gruppieren
Hi DeddyH
ich habe daran noch garnicht gedacht, dies in der SQL-Zeile zu bearbeiten. Deshalb habe ich es auch nicht im Datenbank-Forum geschrieben. Eher dachte ich an Delphicode. Aber ok. Wenn das geht, ich greife per ADO auf mdb zu. |
Re: DateTime nach Wochentag gruppieren
Wie sieht es so aus?
SQL-Code:
Ungetestet, da kein MS-SQL zur Verfügung.
SELECT DATENAME(dw,indate), SUM(anzahl)
FROM messwerte WHERE indate > :MD1 GROUP BY DATENAME(dw,indate) |
Re: DateTime nach Wochentag gruppieren
Danke erstmal,
kann es jetzt nicht gleich ausprobieren. Melde mich dann hier wieder |
Re: DateTime nach Wochentag gruppieren
SQL-Code:
SELECT YEAR(indate) AS jahr,
MONTH(indate) AS monat, DAY(indate) AS tag, SUM(anzahl) AS anzahl FROM messwerte WHERE indate > :MD1 GROUP BY YEAR(indate), MONTH(indate), DAY(indate)
SQL-Code:
SELECT DateSerial(YEAR(indate), MONTH(indate), DAY(indate)) AS datum,
SUM(anzahl) AS anzahl FROM messwerte WHERE indate > :MD1 GROUP BY YEAR(indate), MONTH(indate), DAY(indate) |
Re: DateTime nach Wochentag gruppieren
Danke omata, das sieht plausibel aus.
Werde es testen! |
Re: DateTime nach Wochentag gruppieren
Beim Testen fiel mir auf, dass ich den Wochentag gruppieren will.
Nicht den Tag im Monat. Ich glaube das dies nicht mit einem SQL-String zubewerkstelligen ist. Folglich müssen alle Ergebnisse mit Shortdaynames auseinandergenommen werden. Aber wie? |
Re: DateTime nach Wochentag gruppieren
Bei Access gibt es doch die Funktion Wochentag oder weekday. Weiß allerdings nicht ob die in allen Access-Versionen zur Verfügung steht.
Delphi-Quellcode:
Funktioniert wenn ich das einer ADO-Query im SQL-String mit auf den Weg gebe. Getestet mit Access 2007.
... GROUP BY Weekday([dateingang]);
|
Re: DateTime nach Wochentag gruppieren
Danke, hab dann auch mal die Access-Hilfe "bemüht" :wall: .
Tatsächlich gibt es diese Funktion. Nur ist der Rückgabewert ein Integer. Wen es interessiert, gelöst habe ich das so:
Delphi-Quellcode:
Vielen Dank für die Hilfe
...
Stringlist 'Montag','Dienstag'.... ... SQL.Text:='SELECT sum(anzahl) AS einzelmessung, WEEKDAY(insdate,2) AS Tag'+//2 für Montag ' FROM messwerte'; if nutzdatum.Checked = True then SQL.Add(' WHERE A.insdate > HT1'); SQL.Add(' GROUP BY WEEKDAY(insdate,2)'); ... while not EOF do begin analyse.Form7.zf_wochentage.Lines.Add(wotas[fieldbyname('Tag').AsInteger]+':'); analyse.Form7.zf_wotage_um.Lines.Add(format('%f',[fieldbyname('einzelmessung').AsFloat])); analyse.Form7.Chart1.Series[0].Add(fieldbyname('einzelmessung').AsFloat,wotas[fieldbyname('Tag').AsInteger]); Next; end; ... |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:12 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz