1

我需要生成一份报告,以识别使用与其他客户相同的身份证明的任何客户。

经过一系列其他操作后,我有一个表格,其中包含客户姓名、客户编号以及他们在注册时使用的身份证明编号,按 ID 号分组,任何组只剩下一个条目出去。

问题在于,似乎大量客户在他们的名下拥有多个帐户,这些需要被忽略,除非其他客户也使​​用相同的 ID 号,在这种情况下,需要保留所有具有该 ID 号的条目。

例如下面,我想删除条目 1-3,因为它显然是同一个人,但保留 4 和 5,因为 6 不匹配。

       ID # | Name    | customer number   
   1 | 1111 | April   | 321  
   2 | 1111 | April   | 432  
   3 | 1111 | April   | 431  
   4 | 2222 | Bob     | 987  
   5 | 2222 | Bob     | 454  
   6 | 2222 | Charles | 159  

有什么好的方法可以做到这一点吗?

4

1 回答 1

1

也许使用EXISTS

SELECT ID,Name,[customer number]  
FROM dbo.Customer c1
WHERE EXISTS
(
    SELECT 1 FROM dbo.Customer c2
    WHERE c2.ID = c1.ID 
    AND   c2.Name <> c1.Name
)

请注意,这也将省略具有唯一 ID/名称的记录。如果要包括这些,则必须使用另一个NOT EXISTS

SELECT ID,Name,[customer number]  
FROM dbo.Customer c1
WHERE EXISTS
(
    SELECT 1 FROM dbo.Customer c2
    WHERE c2.ID = c1.ID 
    AND   c2.Name <> c1.Name
)
OR NOT EXISTS
(
    SELECT 1 FROM dbo.Customer c2
    WHERE c2.ID = c1.ID 
    AND   c2.[customer number] <> c1.[customer number]
)

(假设这[customer number]是标识符,因为您没有显示 pk 列名)

于 2013-03-13T22:49:36.670 回答