Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Gruppieren von Datensätzen nach einer Bezeichnung und Datum (https://www.delphipraxis.net/136927-gruppieren-von-datensaetzen-nach-einer-bezeichnung-und-datum.html)

Rainer Wolff 10. Jul 2009 13:01

Datenbank: Firebird • Version: 2.0 • Zugriff über: IBX

Gruppieren von Datensätzen nach einer Bezeichnung und Datum
 
Sorry, wenn meine Frage nix mit Delphi zu tun hat, sondern nur mit SQL.

Ich habe eine Tabelle mit Produktionseinträgen einer Maschine, immer ein Datensatz mit Produkttyp(oder Bezeichnung) und Uhrzeit.
Meine Berichte geben bis jetzt entweder die einzelnen Einträge wieder, oder eine Aufsummierung für einen bestimmten Zeitraum, also Typ A 50 Stück, Typ B 55 Stück ...

Ein Kunde wünscht jetzt eine Gruppierung nach Typ und Zeit. Er produziert z.B. 50 Stück A, dann 30 Stück B, dann wieder 5 Typ A. Dann hätte er gerne eine Liste, die genau dies in der Reihenfolge aufsummiert wiedergibt.
Mein Bericht sagt ihm nur in der Summe 55 Stück A, 30 B.

Gibt es dazu eine elegante SQL-Abfrage, oder müsste ich mir da die Datensätze alle selbst zusammenrechnen?

Leider finde ich auch keine passenden Stichworte, um selbst nach einer Lösung zu googeln, daher frage ich hier einfach mal

Gruß Rainer

DeddyH 10. Jul 2009 13:07

Re: Gruppieren von Datensätzen nach einer Bezeichnung und Da
 
Sry, ich hab die Frage auch nach 3-maligem Lesen noch nicht ganz verstanden. Evtl. kannst Du mal ein paar Beispieldatensätze sowie das gewünschte Abfrageergebnis posten?

mkinzler 10. Jul 2009 13:11

Re: Gruppieren von Datensätzen nach einer Bezeichnung und Da
 
Du meinst immer Anzahl Stück A bis sich der Typ ändert?

Rainer Wolff 10. Jul 2009 13:20

Re: Gruppieren von Datensätzen nach einer Bezeichnung und Da
 
genau das, was mkinzler meint.

Eine Beispieltabelle:

14:00 Typ A
14:01 Typ A
14:02 Typ B
14:03 Typ B
14:04 Typ A

Dann sollte die Ergebnistabelle so aussehen:

1. Typ A 2 Stück
2. Typ B 2 Stück
3. Typ A 1 Stück

mkinzler 10. Jul 2009 13:47

Re: Gruppieren von Datensätzen nach einer Bezeichnung und Da
 
Da wirst du nicht um eine SP herumkommen. In der du die DS manuell durchgehst und auf Änderung des Typs prüfst

omata 10. Jul 2009 23:41

Re: Gruppieren von Datensätzen nach einer Bezeichnung und Da
 
Vielleicht so...
SQL-Code:
SELECT typ, COUNT(*) anzahl
FROM (SELECT a.uhrzeit, a.typ, MIN(b.uhrzeit) typ_group
      FROM fertigung a
      LEFT JOIN fertigung b
        ON    a.uhrzeit < b.uhrzeit
           AND a.typ <> b.typ
      GROUP BY a.uhrzeit, a.typ) x
GROUP BY typ_group, typ
ORDER BY CASE WHEN typ_group IS NULL THEN 1 ELSE 0 END, typ_group, typ

Rainer Wolff 13. Jul 2009 08:23

Re: Gruppieren von Datensätzen nach einer Bezeichnung und Da
 
Ich stehe ehrfürchtig da und staune.

Die Abfrage funktioniert!

Jetzt muss ich blos irgendwann mal noch selbst kapieren, wie die Abfrage funktioniert.

Rainer


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:31 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