Удалить повторяющиеся строки Sql - PullRequest
0 голосов
/ 04 августа 2020

Я должен удалить повторяющиеся строки из моей таблицы. Моя структура таблицы: ClientId-GiftId-Invoice-Quantite

Пример повторяющихся строк:

Example 1:
 1. C1-G1-Inv1-1
 2. C1-G1-Inv1-0
 3. C1-G1-NULL-NULL

Ожидаемый результат: 2 И 3 следует удалить

Пример 2:

 1. C2-G1-NULL-NULL
 2. C2-G1-NULL-NULL
 3. C2-G1-NULL-NULL

Ожидаемый результат: принимается любая строка

Мой запрос на удаление:

WITH CTE AS(
   SELECT ClientID,GiftID,Invoice,Quantity,
       RN = ROW_NUMBER()OVER(PARTITION BY ClientID,GiftID,Invoice,Quantity ORDER BY 
 ClientID,GiftID,Invoice)
   FROM #RowsToDelete
)
Delete FROM CTE where RN > 1

Я новичок в использовании функции ROW_NUMBER (), и я думаю Я не понял, как правильно его использовать. Заранее спасибо

1 Ответ

1 голос
/ 04 августа 2020

Вам необходимо изменить свой раздел по пунктам в порядке следования, как показано ниже -

WITH CTE AS(
   SELECT ClientID,GiftID,Invoice,Quantity,
       RN = ROW_NUMBER() OVER(PARTITION BY ClientID,GiftID ORDER BY Quantite desc)
   FROM #RowsToDelete
)
Delete FROM CTE where RN > 1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...