PDA

View Full Version : embedded SQL in SQLRPGLE



Erol
07-11-12, 11:19
Hallo zusammen,

gibt es eine elegante Lösung mit SQL für einen bestimmten Gruppenwechsel, positive und negative Werte eines Feldes auszuziffern. Es können 0 bis n Datensätze mit demselben absoluten Wert (positiv/negativ) vorkommen. Für jede Gruppenwechselstufe sollen alle sich aufhebenden Paare und die ggf. übrigbleibende Position ohne Pendant mit anderem Vorzeichen unterschiedlich in einem anderen Feld gekennzeichnet werden.
Ich hoffe mich klar genug ausgedrückt zu haben und danke im Voraus für einen kleinen Tipp.
Freundliche Grüße
Erol

Fuerchau
07-11-12, 11:28
Von der Perfomance her etwas schwierig, aber machbar.

select a.key, sum(a.Wert) from myfile a

where not exists (

select * from
(
select x.Key from myfile x
inner join myfile y
on x.key=y.key and abs(x.wert) = abs(y.wert)
) z where a.key=z.key
)

group by key

Erol
07-11-12, 12:06
danke für die schnelle Antwort.
Ich müsste den Wert dann auch in den Key aufnehmen, weil die einzelnen sich aufhebende Datensätze ausgeziffert werden sollen. Wie sähe denn ein Update aus? Allerdings habe ich Bedenken, dass es bei vielen Datensätzen (100.000) mit der Performance noch akzeptabel funktioniert.
Schöne GRüße
Erol

Fuerchau
07-11-12, 12:53
So aus dem Kopf bekomme ich das nicht mehr hin.
Die Aufgabenstellung erscheint mir etwas zu komplex für das Forum.

Mal dir ein Schaubild bzgl. des Datenflusses, der Gruppierung und Summierung, überlege dir wie du es programmieren würdest.

Ein Update sähe im Prinzip so aus:

update mytable a
set myfield = (select ergebnis ....)
where ... Bedingung für zu ändernde Sätze ...