У меня есть такая таблица:
ID | CODE | DATE
1 | 2398 | 2016-4-3
1 | null | 2015-8-3
2 | 1942 | 2015-9-8
3 | 6752 | 2013-2-1
3 | 7217 | 2015-1-1
4 | 9827 | 2011-2-9
в "ID" есть дубликаты, и я хочу удалить строку дубликатов на основании следующих условий:
- Если один из «КОДОВ» содержит ноль, сбросьте ноль.
- Если оба кода содержат действительный код, сохраните тот, который содержит самую последнюю дату.
- Если оба содержат ноль, сохраните тот с самой последней датой.
Желаемый вывод выглядит так:
ID | CODE | DATE
1 | 2398 | 2016-4-3
2 | 1942 | 2015-9-8
3 | 7217 | 2015-1-1
4 | 9827 | 2011-2-9
Я знаю, как отбрасывать дубликаты на основе одного столбца:
WITH CTE AS
(
SELECT *,
RN = ROW_NUMBER() OVER(PARTITION BY COLUMN ORDER BY COLUMN)
FROM dbo.YourTable
)
DELETE FROM CTE
WHERE RN > 1
Но я не знаю, как добавить в моих условиях, кто-то может помочь?