SQL: выберите Различать из определенного столбца - PullRequest
0 голосов
/ 04 мая 2018

Контекст: Я работаю над созданием базы данных Access 2013 для рабочего проекта. Он обращается к некоторым внутренним системам и объединяет их для составления отчетов Одна из этих систем содержит данные о сотрудниках. Я пишу оператор SQL-запроса, чтобы получить список активных сотрудников из определенного отдела. Однако, когда я запустил его, я заметил, что некоторые сотрудники заносятся в базу данных дважды. У меня нет доступа для редактирования внутренних данных! Поэтому я должен удалить дубликаты со своей стороны. Когда я пытаюсь выбрать отдельные значения, это не считается, потому что «некоторая» информация, которую я извлекаю в других столбцах, отличается (например, tel #).

Вопрос: Как я могу исключить повторяющиеся значения из запроса на основе информации только в одном столбце вместо всей таблицы? Есть ли способ сделать это с помощью DISTINCT или другой вариант?

Вроде как, когда вы удаляете дубликаты из Excel, вы можете указать, какие столбцы нужно учитывать

С уважением, Kris

Ответы [ 2 ]

0 голосов
/ 04 мая 2018

Давайте предположим, что у нас есть таблица с именем Department, и она имеет 4 столбца, как в DptName, DptAddress, DptCode, DptTel. Теперь мы хотим удалить все записи, которые идентичны для первых 3 и отличаются только на DptTel.

(вы можете приспособить это к вашей фактической таблице и логике равенства)

вот запрос для достижения так

;with cte as (
    select DptName, count(DptName) as cnt
    from Department
    group by DptName, DptAddress, DptCode
    having count(DptName) > 1
)
, cte2 as (
select top 1 * from Department
where exists (
    select *
    from cte
    where cte.DptName = Department.DptName
)

union

select * from Department
where not exists (
    select *
    from cte
    where cte.DptName = Department.DptName
)
)

delete from Department
where not exists (
    select *
    from cte2
    where cte2.DptTel = Department.DptTel
)

он полностью протестирован и может быть использован, вам нужно только заполнить список столбцов и указать различия в окончательном выборе.

Вуаля !!

0 голосов
/ 04 мая 2018

Есть два основных способа сделать это.

  1. Вы можете использовать разные.
  2. Вы можете использовать группирование по определенному столбцу. Это обеспечит уникальность значений столбца в результате.
...