Datenbank: MySQL • Version: 5 • Zugriff über: FireDac
MySQL Qwert kummulieren
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo Zusammen,
ich habe eine größere Query, bei der ich bei einer Spalte Hilfe brauche... Ich möchte den Lagerabgang und den Lagerzugang (geplant) in einer Tabelle darstellen. Dann möchte ich den kummulierten Lagerbestand darstellen. Lagerabgang sind Kundenaufträge und Lagerzugang sind Produktionsaufträge und sind in unterschiedlichen Tabellen. Meine Query sieht bis jetzt so aus:
Delphi-Quellcode:
Das Ergebnis habe ich mal als Bild an den Post gehängt. In diesem Bild habe ich auch in rot eingezeichnet, was das Ziel ist...
select a1.lgzgda as Datum,
'' as Kunden, '' as Bedarf, '' as Lager, concat(a1.waaunr, '-', a1.waaupo) as Auftrag, a1.wafemg as Auftragsmenge, a1.oaagnr, concat('(', oamanr,') ', a1.oaagbz) as AGBezeichnng, a1.kritfa, date_format(a1.Epress,'%d.%m.%Y') as theodate, date_format(eilfa.start,'%d.%m.%Y') as start, concat(benutzer.as400kz,': ','(', kommentfa.ag,') ',kommentfa.kommentar) as Kommentar, eilfa.angesehen, eilfa.angeschoben, a1.epressproz, a1.emuster from as400 as a1 left join eilfa on eilfa.waaunr=a1.waaunr and eilfa.waaupo=a1.waaupo and eilfa.oaagnr=a1.oaagnr left join kommentfa on kommentfa.waaunr=a1.waaunr and kommentfa.waaupo=a1.waaupo and kommentfa.id= (select max(id) from kommentfa where kommentfa.waaunr=a1.waaunr and kommentfa.waaupo=a1.waaupo) left join benutzer on concat(benutzer.vorname,' ',benutzer.name)=kommentfa.verfasser where oatlkz<>9 and watenr= 10009923 and a1.lgzgda<>'0000-00-00' group by a1.waaunr union select ltlite as Datum, kdkuna as Kunden, liefer as Bedarf, '' as Lager, '' as Auftrag, '' as Auftragsmenge, '' as oaagnr, '' as AGBezeichnung, '' as kritfa, '' as theodate, '' as Start, '' as Kommentar, '' as angesehen, '' as angeschoben, '' as epressproz, '' as emuster from omslp where watenr= 10009923 order by Datum asc, oaagnr desc In der ersten Spalte ist das Datum. Überall da, wo ein Kunde drinsteht, ist auch für dieses Datum ein Abgang geplant. Wenn kein Kunde da steht, dann steht ein der Spalte Auftrag eine Nummer. Zu dem Datum in Spalte 1 muss der Auftrag fertig werden. Die Daten hier sind in der Vergangenheit - alte Datenbasis - im echten Leben sind die in der Zukunft... Kann mir jemand helfen, wie ich die Kummulierung für Spalte 4 (Lager) hinbekomme? Ich würde in die erste Zeile den Lagerbestand aktuell holen (12.000) und die Auftragsmenge aus Zeile 1 addieren (Auftragsmenge=213752). In der zweiten Zweile würde ich von der Summe der ersten Zeile die Spalte Bedarf (39000) subtraieren... Vielen Dank Patrick |
AW: MySQL Qwert kummulieren
Ich antworte zwar nicht auf deine Frage, aber:
Ich hatte einmal die gleiche Aufgabenstellung + das so zu lösen war bei geringer Datenmenge ganz brauchbar. je mehr daten aber im System waren, desto langsamer wurde das. Außerdem gibt es irgendwann sowas wie Inventureinträge, manuelle Lagerkorrekturen etc.. Ich hatte damals auch noch einen (Mischpreis)mit in Spiel. Erster Versuch war, für den Lagerbestand eine eigene Funktion zu schreiben, die man dann mit
Code:
einbindet. Geht gut, ist irgendwann nicht performant.
select …, f_lagerstand(artikelid) from …
Zweiter Versuch: Idee: Habe ich den Lagerbestand als Attribut in meiner Tabelle, kann ich ihn einfach ausgeben und muss ihn nicht jedes Mal neu berechnen. Ich muss ihn nur berechnen, wenn er sich ändert. Wann ändert er sich? bei INSERT/DELETE/UPDATE -- > Das schreit nach TRIGGER. Vielleicht hilft dir das. |
AW: MySQL Qwert kummulieren
Wenn ich Dich richtig verstanden habe, möchtest Du da so eine Art Spreadsheet Veranstaltung draus machen. ("vorige Zeile .. usw.").
Das ist eingedenkt des vorigen Beitrages kein Spaß in SQL. SQL arbeitet erstmal Mengen-orientiert und kennt die vorige Zeile nicht. Kurz: Du möchtest Windows Functions benutzen und dazu möchtest Du glaub ich eine aktuellere DB Version. Mit der ollen mySQL wird es unschön. Kannst Du auf 8 umsteigen? |
AW: MySQL Qwert kummulieren
Hallo Zusammen,
die MySQL-Version kann ich aktuell nicht ändern. Ich glaube, dass wird zu kompliziert, sodass es einfacher wird, dass über eine Schleife im Nachgang laufen zu lassen. Aber vielen Dank für die Einschätzung Patrick |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:51 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