我有一个带有ID,名字和姓氏的SQL Server 2012表。该ID是每人唯一的,但由于历史Feed中的错误,不同的人被分配了相同的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
有两个ID多次出现。 id为4的行是相同的。我不想在我的结果中这样做。 ID为1的行,虽然名字相同,但是1行的姓氏不同。我只想要那些ID相同但名字或名字不同的ID。
我尝试将多次出现的ID加载到临时表中,并尝试将其与父表进行比较,但未成功。我可以尝试和实施的任何其他想法吗?
这是我正在寻找的输出
ID
---
1
答案 0 :(得分:0)
如果您需要ID,请使用聚合和having
:
select id
from t
group by id
having min(firstname) <> max(firstname) or min(lastname) <> max(lastname);
答案 1 :(得分:0)
试试这个:
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
OUTPUT :1