ВЫБЕРИТЕ DISTINCT - PullRequest
       20

ВЫБЕРИТЕ DISTINCT

2 голосов
/ 01 апреля 2009

Я работаю над пакетом служб SSIS, в который импортирую данные из файла CSV в таблицу SQL.

Единственное поле, которое меня беспокоит, это имя пользователя. Это имя пользователя должно быть уникальным . Мне все равно, имя или фамилия одинаковые или нет.

В пакете я импортировал данные из файла во временную таблицу SQL. А затем я использовал SELECT DISTINCT, чтобы выбрать уникальное имя пользователя. А затем вставьте в таблицу назначения.

Проблема заключается в следующем: когда я делаю SELECT DISTINCT Имя пользователя, Имя и Фамилия FROM tempUsers.

Возвращает:

  • Дж. Смит, Джон, Смит
  • Дж. Смит, Джо, Смарт
  • MBopp, Mary, Boppins

Но я хочу, чтобы он вернулся:

  • Дж. Смит, Джон, Смит
  • MBopp, Mary, Boppins

Ответы [ 2 ]

3 голосов
/ 01 апреля 2009

SELECT DISTINCT выберет все отдельные строки для каждого указанного столбца, так что это не совсем то, что вы ищете.

Если ваш SQL поддерживает это, попробуйте GROUP BY с FIRST(), как показано ниже. Будет возвращена первая запись для каждого отдельного имени пользователя.

SELECT Username, FIRST(Firstname), FIRST(Lastname)
FROM tempUsers
GROUP BY Username

Если нет, вы должны сделать это сложным способом, используя идентификатор строки и выбрать:

SELECT Username, FIRST(Firstname), FIRST(Lastname)
FROM tempUsers
WHERE RowID IN (SELECT MIN(RowID)
                FROM tempUsers
                GROUP BY Username)

** Вы не должны использовать MIN с Именем и Фамилией, потому что вы не можете гарантировать, что они будут из одной строки:

SELECT Username, MIN(Firstname), MIN(Lastname)
FROM tempUsers
GROUP BY Username

0 голосов
/ 01 апреля 2009

Для Oracle вы можете использовать следующий запрос:

select * from tempusers where rowid in (
select min(rowid) from tempusers group by username);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...