У меня есть таблица с двумя возможными уникальными идентификаторами (ID1 и ID2).Каждая строка будет иметь один или оба из этих идентификаторов.Данные в каждой строке одинаковы для каждого идентификатора, за исключением отметки времени.Я хотел бы исключить дубликаты из каждого значения, но обрабатывать пустые значения как уникальные значения.
Этот вопрос: Как удалить дублирующиеся строки на сервере sql?
Направил меня наэтот сайт: http://www.codaffection.com/sql-server-article/delete-duplicate-rows-in-sql-server/
, где я задал следующий запрос:
WITH CTE AS
(
SELECT *,ROW_NUMBER() OVER (PARTITION BY ID1 ORDER BY ID1) AS RN
FROM Filings_Search
)
DELETE FROM CTE WHERE RN<>1
К сожалению, это также удалило все мои нулевые значения!Как я могу изменить этот запрос, чтобы избежать удаления нулевых значений?
Редактировать: Вот пример того, как будут выглядеть мои данные (если кто-нибудь знает, как правильно форматировать таблицы, дайте мне знать. Я использовал https://senseful.github.io/text-table/).
+------+------+----------+-----------+
| ID1 | ID2 | Data | Timestamp |
+------+------+----------+-----------+
| NULL | abc | macd | 01:40 |
| NULL | abc | macd | 04:23 |
| NULL | def | pfchangs | 01:41 |
| 123 | NULL | wendys | 02:42 |
| 123 | NULL | wendys | 03:45 |
+------+------+----------+-----------+
Запуск на ID1выдаст:
+------+------+----------+-----------+
| ID1 | ID2 | Data | Timestamp |
+------+------+----------+-----------+
| NULL | abc | macd | 01:40 |
| NULL | abc | macd | 04:23 |
| NULL | def | pfchangs | 01:41 |
| 123 | NULL | wendys | 02:42 |
+------+------+----------+-----------+
Работа на ID2 выдаст:
+------+------+----------+-----------+
| ID1 | ID2 | Data | Timestamp |
+------+------+----------+-----------+
| NULL | abc | macd | 01:40 |
| NULL | def | pfchangs | 01:41 |
| 123 | NULL | wendys | 02:42 |
| 123 | NULL | wendys | 03:45 |
+------+------+----------+-----------+
Извинения, если это дубликат, я новичок в SQL и не смог найти ничего такого, как яищу.