En supposant que id
ne peut pas être dupliquées, vous pouvez effectuer les opérations suivantes:
;WITH CTE AS
(
SELECT id,
operation,
age,
shoesize,
N = COUNT(*) OVER(PARTITION BY operation, age, shoesize)
FROM YourTable
)
DELETE FROM CTE
WHERE N > 1
OR operation = 'R -'
OR shoesize < 0
Si id
doit être pris en compte pour les doublons, puis:
;WITH CTE AS
(
SELECT id,
operation,
age,
shoesize,
N = COUNT(*) OVER(PARTITION BY id, operation, age, shoesize)
FROM YourTable
)
DELETE FROM CTE
WHERE N > 1
OR operation = 'R -'
OR shoesize < 0
Si vous devez supprimer uniquement les lignes en double, et que vous voulez laisser une de ces lignes, alors vous devez faire:
;WITH CTE AS
(
SELECT id,
operation,
age,
shoesize,
RN = ROW_NUMBER() OVER(PARTITION BY id, operation, age, shoesize ORDER BY id)
FROM YourTable
)
DELETE FROM CTE
WHERE RN > 1
OR operation = 'R -'
OR shoesize < 0
je dois que je dois enregistrer ce tableau trop – user2448666
Quel devrait être votre sortie avec Respectez les données que vous avez fournies – Luv
Quels sont vos critères pour les doublons? – Luv