我需要生成一份报告,使用与另一位客户相同的身份证明来识别任何客户。
经过一系列其他操作后,我有一张表,其中包含客户名称,客户编号,以及他们在注册时使用的身份证明号码,按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
有没有好办法呢?
答案 0 :(得分: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列名)