2016-12-08 4 views
-1

У меня есть таблица SQL Server 2012 с идентификатором, именем и фамилией. Идентификатор уникален для каждого человека, но из-за ошибки в историческом фиде различным людям был присвоен одинаковый идентификатор.Запрос таблицы SQL Server с разными значениями в одном столбце с тем же ID

------------------------------ 
ID FirstName LastName 
------------------------------ 
1 ABC   M 
1 ABC   M 
1 ABC   M 
1 ABC   N 
2 BCD   S 
3 CDE   T 
4 DEF   T 
4 DEF   T 

Есть два идентификатора, которые присутствуют несколько раз. 1 и 4. Строки с id 4 идентичны. Я не хочу этого в своем результате. Строки с идентификатором 1, хотя первое имя такое же, последнее имя отличается для 1 строки. Я хочу, чтобы только те ID, идентификатор которых один и тот же, но одно из первых или последних имен отличается.

Я попытался загрузить идентификаторы, которые имеют несколько вхождений в таблицу temp, и попытался сравнить его с родительской таблицей, хотя и безуспешно. Любые другие идеи, которые я могу попробовать и реализовать?

Это выход Ищу

ID 
--- 
1 
+1

Вы также можете показать нам выход желания? –

+0

Мне просто нужен вывод запроса. В этом случае 1 –

ответ

0

Если вы хотите, идентификаторы, а затем использовать агрегацию и having:

select id 
from t 
group by id 
having min(firstname) <> max(firstname) or min(lastname) <> max(lastname); 
0

Try This:

CREATE TABLE #myTable(id INT, firstname VARCHAR(50), lastname VARCHAR(50)) 

INSERT INTO #myTable VALUES 
(1, 'ABC',   'M'), 
(1, 'ABC',   'M'), 
(1, 'ABC',   'M'), 
(1, 'ABC',   'N'), 
(2, 'BCD',   'S'), 
(3, 'CDE',   'T'), 
(4, 'DEF',   'T'), 
(4, 'DEF',   'T') 

SELECT id FROM (
    SELECT DISTINCT id, firstname, lastname 
    FROM #myTable) t GROUP BY id HAVING COUNT(*)>1 

ВЫХОД: 1