![]() |
Datenbank: egal • Version: - • Zugriff über: -
sql-Abfrage Artikel aufsummieren nach Produktionszeit
Hallo
ich möchte eine Tabelle mit Produktionsdaten zusammenfassen. Die Einträge sind sinngemäß so: Datum-Zeit; Artikel 10.12.2010 9:00; "Artikel A" 10.12.2010 9:01; "Artikel A" 10.12.2010 9:02; "Artikel A" 10.12.2010 9:03; "Artikel B" 10.12.2010 9:04; "Artikel B" 10.12.2010 9:05; "Artikel A" 10.12.2010 9:06; "Artikel A" Herauskommen soll dann eine Aufsummierung von allen Artikeln, die direkt nacheinander gefertigt wurden, also in etwa: "Artikel A"; 3 Stück; (am besten gleich noch mit Uhrzeit 9:00-9:02) "Artikel B"; 2 Stück; (am besten gleich noch mit Uhrzeit 9:03-9:04) "Artikel A"; 2 Stück; (am besten gleich noch mit Uhrzeit 9:06-9:06) Gibt es dazu einen mächtigen sql-Ausdruck, oder muss ich das Hand bei Fuß mit Durchlaufen der Tabelle und programmintern Aufsummieren erledigen? Gruß Rainer |
AW: sql-Abfrage Artikel aufsummieren nach Produktionszeit
Zitat:
SQL-Code:
sorry...habe gerade gesehen, dass Du eine Reihenfolge brauchst...bleibt nur Scripting (Stored Procedure) bzw clientseitige aufsummierung.
SELECT Artikel, Count(*), MIN(Datum-Zeit), MAX(Datum-Zeit) FROM Produktionsdaten GROUP BY Artikel
|
AW: sql-Abfrage Artikel aufsummieren nach Produktionszeit
Moin,
würde das noch anders angehen. Eigentlich brauchst Du einen Marker, wann der Artikel gewechselt wird. Am besten wäre das schon beim Eintragen in der Datenbank. Oder aber man läßt eine Procedure laufen.
Delphi-Quellcode:
Danach kann man dann eine SQL auf die GROUP_NO gruppieren:
CREATE PROCEDURE GET_GRP_NO RETURNS
( GROUP_NO INTEGER, Datum DATE, Zeit TIME1 Artikel VARCHAR(10) ) AS DECLARE VARIABLE iCOUNT INTEGER; DECLARE VARIABLE iARTIKEL CHAR(10); BEGIN iCOUNT = 0; iARTIKEL = ""; FOR SELECT Datum, Zeit, Artikel FROM Tabelle INTO :Datum, :Zeit, :Artikel DO BEGIN if iARTIKEL <> Artikel THEN iCOUNT = iCOUNT + 1 ; GROUP_NO = iCOUNT; iARTIKEL = Artikel SUSPEND; END END ^
Delphi-Quellcode:
GrüßeSELECT DISTINCT ARTIKEL, COUNT (Artikel), MIX (TIME), MAN (TIME), FROM Tabelle GROUP BY GROUP_NO ORDER BY GROUP_NO |
AW: sql-Abfrage Artikel aufsummieren nach Produktionszeit
Hallo Martin,
die Db ist ja egal laut Anforderung, aber zu welcher DB gehört die Procedure GET_GRP_NO RETURNS? Funktioniert das? Gruß, Jo |
AW: sql-Abfrage Artikel aufsummieren nach Produktionszeit
@jobo
das was das Beispiel für eine selbst zu erstellende Prozedur. Zitat:
Du wirst in jedem Fall eine Prozedur benötigen und dort Temporärtabellen und gegf. Cursor. Unter MSSQL kein Problem, ich nehme an Oracle und Firebird dürften derartigen auch unterstützen, MYSQL keine Ahnung, Access nicht Nettwerktauglich mit einer harten "Temporärtabelle"... |
AW: sql-Abfrage Artikel aufsummieren nach Produktionszeit
Hallo Bummi,
danke dir, aber ich wollte gern wissen, was das für eine DB ist, die diese Prozedur "versteht". Ich arbeite fast nur mit Oracle, daher kann ich mich nicht entscheiden, ob die angeführte Prozedur eine Art Muster sein soll oder wirklich auf einem bestimmten RDBMS läuft. Eine Prozedur dazu ist natürlich kein Problem, ein Select wäre aber viel toller. :) Gruß, Jo |
AW: sql-Abfrage Artikel aufsummieren nach Produktionszeit
Moin, moin zusammen,
also die Procedure ist jetzt von Firebird, aber das PSQL von FB ist von Oracle PL/SQL ja auch nicht so weit weg. Grüße |
AW: sql-Abfrage Artikel aufsummieren nach Produktionszeit
Tag,
Zitat:
So, genug OT. Schönes Wochenede Jo |
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:44 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