Мне нужно обновить записи, которые будут соответствовать конкретному запросу, поэтому я пытаюсь выяснить, как найти список повторяющихся значений, где один столбец отличается по значению.Найти дубликаты, где в другом столбце есть разные столбцы
У меня есть следующие определения таблицы
DocumentId (BIGINT)
NotePopupId (INT)
IsPopup (BIT)
Note (NVARCHAR(100))
Моя таблица может иметь следующие данные:
1|1|False|Note1
1|2|False|Note2
2|1|False|Note1
2|2|True|Popup1
3|1|False|Note1
3|2|True|Popup1
4|1|False|Note1
4|2|False|Note2
Мне нужно возвращать список DocumentId, которые имеют более чем один DocumentId определено, но где Поле IsPopup является True и False и игнорирует те, где все они являются ложными или все истинными.
Я понимаю, как написать базовый запрос, который вернет общее количество дубликатов, но я не понимаю, как бы я мог убедиться, что он вернет только дубликаты, у которых в поле IsPopup установлено значение true и false для 2 или больше записей с тем же DocumentId.
Таким образом, в данном случае, на основании вышеизложенного, было бы вернуть DocumentId 2 и 3.
Спасибо.
Что ж, это так просто! Никогда не думал, что вы можете использовать агрегаты min & max для определения значений таким образом. Узнал что-то новое! Спасибо :) – Thierry
Быстрый вопрос. Я добавил 'и count (documentid)> 1' к запросу, но я вижу, что результаты одинаковы. Является ли использование Min и/или Max каким-то образом предполагает, что счет будет выше одного? – Thierry
Эти функции не допускают такого предположения. Но проверка двух разных значений в одном столбце потребует, чтобы у вас должно было быть _th минимум_ двух строк для работы. И поэтому 'count (documentid)> 1' автоматически истинно тогда. – shawnt00