Anmelden

View Full Version : SQL - Finden letzte Bewegung



spiceisnice
02-09-03, 13:06
Hallo,

kann man per SQL aus einen File wo je Artikel beliebig viele Bewegungen mit Datum gespeichert sind jeweils den Datensatz mit der letzten Bewegung in einen anderen File ausgeben. Per Pgm wäre das ein Klacks, will mich jedoch weiterentwickeln und das per SQL machen.

Da es sich um eine einmalige Angelegenheit handelt wäre interaktives SQL anstelle SQL-RPG vielleicht günstiger.

Kann mir jemand helfen. Danke.

Joe
02-09-03, 15:18
Hallo.

Mit folgendem SQL-RPG würde es funktionieren, wenn in Tabelle1
der Satz mit der letzten Bewegung eindeutig identifiziert werden kann. (z.B. Timestamp)

C/EXEC SQL
C+ select max(Feld) into :Groesstes from Tabelle1
C/END-EXEC

C/EXEC SQL
C+ Insert into Tabelle2 select * from Tabelle1 where Feld = :Groesstes
C/END-EXEC


Wahrscheinlich geht das auch mit einer Insert-Anweisung und einem subselect - aber da sind dann die Profis gefragt.

gruss
Joe

BenderD
03-09-03, 09:14
Hallo,

es wird nicht ganz klar, wie der letzte Satz identifizierbar ist, wenn pro Tag mehrere Bewegungen sind, die mit demselben Datum abgespeichert sind, dann ist das auch in RPG ein (oft benutzter) Wackelhaufen. Sich auf die Sequenz zu verlassen könnte auch fast stimmen, auch in RPG mit record level access (Beispiel: Programm legt leeren Satz an zum reservieren und macht update, wenn der Benutzer fertig ist).
Zudem ist beim RGZPFM meines Wissens nicht dokumentiert sicher gestellt, dass die relative Sequenz erhalten bleibt (sobald der RGZPFM parallel losdüst, vielleicht in V7, stimmt das nicht mehr).
In SQL würde man üblicherweise eh gelöschte Sätze wieder belegen und sich den RGZPFM schenken, dann geht obiger Wackelhaufen nicht mehr.
Ansonsten:
INSERT INTO ...
SELECT ... FROM ... WHERE
TIMESTMP = MAX(TIMESTAMP)
GROUP BY ARTIKEL

Dieter