PDA

View Full Version : Grupenwechsel, ersten Satz ausgeben



programmer400
21-03-12, 08:13
Folgendes Problem:

in eine Schnittstellendatei wurden durch einen Fehler vermehrt Datensätze ausgegeben, die eigentlich nur einmal in der Schnittstelle sein dürften.

Gibt es eine Möglichkeit, ohne Programmierung, jeweils den ersten oder letzten Datensatz in eine neue Datei zu schreiben?

Mit Query gehts nicht, da ich mehr als 9 Gruppenstufen hätte.

Bitte um Hilfe - danke im Voraus.

B.Hauser
21-03-12, 08:35
Da hilft nur SQL:

1. Datei mit allen Feldern erstellen (kann auch mit DDS erfolgen oder mit CRTDUPOBJ ohne Daten)
2. Zum Einfügen kann z.B. der folgende Befehl verwendet werden:


Insert Into MyLib/MyNewTable
With x as (Select Key1, Key2, Key3, ... KeyN, Min(RRN(YourTable) MinRRN
from YourTable
Group By Key1, Key2, Key3 ... KeyN)
Select a.*
from YourTable a join x on a.Key1 = x.Key1
and a.Key2 = x.Key2
...
and a.KeyN = x.KeyN
Where MinRRN = RRN(a)

Birgitta

Fuerchau
21-03-12, 10:14
RRN ist ja, wie du selber sagtest, nicht gerade performant.

B.Hauser
21-03-12, 10:25
Man kann natürlich auch über ROW_NUMBER gehen, aber die Funktion gibt es zum einen erst seit Release V5R4 und kann zum anderen nur in Verbindung mit der SQE verwendet werden.


With x as (Select Row_Number() Over(Partition By Key1, Key2, ... KeyN
Order By Fld1, Fld2, ... FldM) Lfd
a.*
from YourTable)
Select *
from x
Where Lfd = 1:

Bei der Frage schien mir es mir mehr um eine adhoc Lösung um die Daten zu bereinigen und als eine dauerhafte Lösung zu handeln.

Birgitta

BenderD
21-03-12, 10:38
... wenn die Sätze komplett gleich sind, tut's auch select distinct ...

D*B