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.
Voilà la syntaxe:
-- Declaration des variables DECLARE @Client integer, @KE varchar(1), @DN varchar(1), @CI varchar(1)
-- 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 A+
|