USDAVIS
02-03-09, 09:30
Moin, moin.
Aus einer Datei sollen per SQL doppelte Sätze entfernt werden und zwar in Abhängigkeit eines Datums. Der Satz mit dem jüngsten Datum soll in der Datei verbleiben.
Etwa so:
delete from datei a
where
a.kunde in
(select b.kunde from datei b
group by b.kunde
having count(*) > 1)
and
a.datum <
(select max(c.datum) from datei c
where c.kunde = a.kunde)
Das Problem ist jedoch das Vorkommen von Sätzen, bei denen ein Kunde zwei Sätze mit gleichem Datum hat.
z. B.
0815 2009-01-23
0815 2009-01-23
0816 2009-02-01
0816 2008-12-31
0816 2007-12-31
In diesem Fall würde zwar Kunde 0816 korrekt gelöscht, d.h., nur der Satz aus 2009 bleibt bestehen. Kunde 0815 bleibt aber mit 2 Sätze in der Datei, weil meine Abfrage < Max(Datum) lautet. Ändere ich die Abfrage auf <= Max(Datum) werden aber fälschlicherweise beide Sätze von Kunde 0815 gelöscht.
Im Moment habe ich da ein grosses Brett vor dem Kopf und bitte um Anregungen, wie man dieses Problem lösen kann. Das Ganze müsste dann auch noch (bitte nicht lachen) unter V4R3 laufen.
Danke und Gruss
Ulli
Aus einer Datei sollen per SQL doppelte Sätze entfernt werden und zwar in Abhängigkeit eines Datums. Der Satz mit dem jüngsten Datum soll in der Datei verbleiben.
Etwa so:
delete from datei a
where
a.kunde in
(select b.kunde from datei b
group by b.kunde
having count(*) > 1)
and
a.datum <
(select max(c.datum) from datei c
where c.kunde = a.kunde)
Das Problem ist jedoch das Vorkommen von Sätzen, bei denen ein Kunde zwei Sätze mit gleichem Datum hat.
z. B.
0815 2009-01-23
0815 2009-01-23
0816 2009-02-01
0816 2008-12-31
0816 2007-12-31
In diesem Fall würde zwar Kunde 0816 korrekt gelöscht, d.h., nur der Satz aus 2009 bleibt bestehen. Kunde 0815 bleibt aber mit 2 Sätze in der Datei, weil meine Abfrage < Max(Datum) lautet. Ändere ich die Abfrage auf <= Max(Datum) werden aber fälschlicherweise beide Sätze von Kunde 0815 gelöscht.
Im Moment habe ich da ein grosses Brett vor dem Kopf und bitte um Anregungen, wie man dieses Problem lösen kann. Das Ganze müsste dann auch noch (bitte nicht lachen) unter V4R3 laufen.
Danke und Gruss
Ulli