Fidoudou
Messages postés11Date d'inscriptiondimanche 23 mars 2003StatutMembreDernière intervention16 janvier 2005
-
26 août 2004 à 09:07
gaa179
Messages postés361Date d'inscriptionmercredi 21 mai 2003StatutMembreDernière intervention12 novembre 2009
-
27 août 2004 à 14:19
Bonjour à tous,
J'aurai voulu savoir quel était le moyen le plus simple pour éliminer des doublons dans une table d'une BDD SQL Server 2000.
Y a t-il possibilité de le faire avec une procédure stockée et comment ?
gaa179
Messages postés361Date d'inscriptionmercredi 21 mai 2003StatutMembreDernière intervention12 novembre 20092 27 août 2004 à 14:19
Salut,
C'est possible. Tu dois créer des cursors.
Le premier pour séléctionner tes records doubles. Tu balaye les records dans ton cursor et pour chaque valeur tu crée un nouveau cursor comprenant tous les records correspondant à ta clef de double. Tu passe le premier record de ce cursor et tu efface tous les suivants.
-- Déclarations du cursor contenant les doubles
DECLARE tdouble CURSOR
For
Select CIMP_ClientReferenceNumber, CIMP_KindOfEnergy, CIMP_DeliveryNumBer, CIMP_CounterIdentification
from TmpCounter
Group By CIMP_ClientReferenceNumber, CIMP_KindOfEnergy, CIMP_DeliveryNumBer, CIMP_CounterIdentification
having count(*) > 1
-- Ouverture du curseur
OPEN tdouble
FETCH NEXT FROM tdouble into @client, @KE, @DN, @CI
WHILE @@FETCH_STATUS = 0
BEGIN
--Declaration du cursor contenant tous les records de même que le rec double
DECLARE Rec CURSOR
FOR Select * from Counter where CIMP_ClientReferenceNumber = @Client AND CIMP_KindOfEnergy @KE AND CIMP_DeliveryNumBer @DN AND CIMP_CounterIdentification = @CI
Open Rec
fetch next from Rec -- saute le premier record
fetch next from Rec
WHILE @@FETCH_STATUS = 0
BEGIN
--delete
fetch next from Rec --record suivant
END
Close Rec
DEALLOCATE Rec
FETCH NEXT FROM tdouble into @client, @KE, @DN, @CI -- record suivant
END
Close tdouble
Deallocate tdouble