Re: Lauter doppelte Datensätze
geschrieben von:
christian_goto (---.dip0.t-ipconnect.de)
Datum:
moin,
wenn die doppelten identisch sind bis auf die VERPFLEGUNGSAUSGABE_ID dann könnte man testweise sowas auf die reise schicken:
.............................................
select VERPFLEGUNGSAUSGABE_ID
,PERS_LFDNR
,PERS_JAHR
,LFDNR
,JAHR
,VERPFLEGUNGSART
,CR_DATE
,GEBUCHT
,STANDORT
from tabelle where (
VERPFLEGUNGSAUSGABE_ID
,PERS_LFDNR
,PERS_JAHR
,LFDNR
,JAHR
,VERPFLEGUNGSART
,CR_DATE
,GEBUCHT
,STANDORT
)
in (select max(VERPFLEGUNGSAUSGABE_ID)
,PERS_LFDNR
,PERS_JAHR
,LFDNR
,JAHR
,VERPFLEGUNGSART
,CR_DATE
,GEBUCHT
,STANDORT
from tabelle
group by
PERS_LFDNR
,PERS_JAHR
,LFDNR
,JAHR
,VERPFLEGUNGSART
,CR_DATE
,GEBUCHT
,STANDORT
having count(*) > 1);
............................................
wenn das ergebnis die gewünschten doppelten sind könnte man sowas loslassen:
............................................
delete
from tabelle where (
VERPFLEGUNGSAUSGABE_ID
,PERS_LFDNR
,PERS_JAHR
,LFDNR
,JAHR
,VERPFLEGUNGSART
,CR_DATE
,GEBUCHT
,STANDORT
)
in (select max(VERPFLEGUNGSAUSGABE_ID)
,PERS_LFDNR
,PERS_JAHR
,LFDNR
,JAHR
,VERPFLEGUNGSART
,CR_DATE
,GEBUCHT
,STANDORT
from tabelle
group by
PERS_LFDNR
,PERS_JAHR
,LFDNR
,JAHR
,VERPFLEGUNGSART
,CR_DATE
,GEBUCHT
,STANDORT
having count(*) > 1);
..........................................
das delete dürfte schon einige zeit dauern bei der menge an sätzen.
ich würde alle trigger usw. beim löschen deaktivieren.
evt. paar unique constraints setzen um sowas in zukunft zu vermeiden.
g/c