工作中的问题,是你的数据不被标准化。您可以使用下面的查询来查找重复的帐号,您可以将结果放置或嵌套到子查询中,以返回原始数据以获取客户名称和卡号。您的查询存在的另一个问题是您将卡号和名称包含在组中,这意味着如果两个不同的人或卡共享一个帐号,则您将无法检测到该卡号。
编辑:这实际上是我在重复搜索时发现的一种非常常见的模式。您必须通过仅在要查找重复项的列上进行分组来检测重复项,然后必须将其嵌套在子查询中或加入以返回并查明其他数据是相关的。
Select AccountNumber From
(Select [CARD NUMBER],[CUSTOMER NAME],[ACCT NBR 1] as AccountNumber
From DebitCardData.dbo.['ATM Checking Accts - Active$']
UNION
Select [CARD NUMBER],[CUSTOMER NAME],[ACCT NBR 2] as AccountNumber
From DebitCardData.dbo.['ATM Checking Accts - Active$']
) as NormalizedDebitCardData
GroupBy AccountNumber
Having Count(*)>1
要返回结果中的所有其他列:
Select [CARD NUMBER],[CUSTOMER NAME],[ACCT NBR 1], [ACCT NBR 2]
From DebitCardData.dbo.['ATM Checking Accts - Active$']
Inner Join
(Select AccountNumber From
(Select [CARD NUMBER],[CUSTOMER NAME],[ACCT NBR 1] as AccountNumber
From DebitCardData.dbo.['ATM Checking Accts - Active$']
UNION
Select [CARD NUMBER],[CUSTOMER NAME],[ACCT NBR 2] as AccountNumber
From DebitCardData.dbo.['ATM Checking Accts - Active$']
) as NormalizedDebitCardData
Group By AccountNumber
Having Count(*)>1) as AccountNumberDuplicates
On AccountNumberDuplicates.AccountNumber = [ACCT NBR 1] or AccountNumberDuplicates.AccountNumber = [ACCT NBR 2]
Order By AccountNumberDuplicates.AccountNumber