Sql 将标识应该相同的行的查询(除2个例外)

Sql 将标识应该相同的行的查询(除2个例外),sql,Sql,我们有一个客户表,如果一些客户可用于多个办公室,则会多次出现。如果有人多次添加客户,我希望能够运行一个报告,看看他们是否在每个位置都正确地添加了客户,但我真的不知道从哪里开始。这里有一个例子 UID, Office, CustomerCode, CUSTOMERNAME, CUSTOMERHEADOFFICEPHONE 001, Manchester, 123, 123 Supplied Ltd, 0161 123456 002,

我们有一个客户表,如果一些客户可用于多个办公室,则会多次出现。如果有人多次添加客户,我希望能够运行一个报告,看看他们是否在每个位置都正确地添加了客户,但我真的不知道从哪里开始。这里有一个例子

UID, Office,          CustomerCode, CUSTOMERNAME,      CUSTOMERHEADOFFICEPHONE
001, Manchester,  123,                 123 Supplied Ltd,   0161 123456
002, London,        123,                 123 Suppls Ltd,     0161 123446   
因此,我们可以从曼彻斯特和伦敦办事处向客户“123”销售产品。报告应关注CustomerCode,并确保每当出现“123”时,除UID(始终不同)、Office(当然不同)外,所有大写行都应相同。因此,报告会发现并非所有的客户姓名都是相同的,而且他们在CustomerHeadOfficePhone上也犯了一个错误。如果我有数千行,并且所有其他“多客户”都匹配,我希望我的报告只显示这两行。我该怎么做呢?

我会试试:

select CustomerCode, CustomerName, CustomerHeadOfficePhone, count(*)
from TableName
group by CustomerCode, CustomerName, CustomerHeadOfficePhone
having count(*) > 1

这将列出每个出现的具有不同值的记录,如果要删除这些记录,则需要使用这些值。您可以通过使用DISTINCT缩短列表,并且可以通过围绕此列表的附加查询以更好的方式呈现UID。但是,您似乎只要求提供要修复的问题列表,我相信这会给您提供解决方案。

确切的语法取决于您的SQL变体,但我认为您正在寻找一个GROUP BY,然后是HAVING子句。WHERE和HAVING是相似的,但是在返回行之前,HAVING在各个行上进行筛选,而HAVING在分组行之后进行筛选。因此,您可能需要COUNT(*)大于1或类似的值。如果你愿意的话,我可以给你一个答案,但你需要的似乎只是一个提示。谢谢你,我会草拟一些东西然后再给你