Sql server 合并同一表中的记录

Sql server 合并同一表中的记录,sql-server,database,data-integrity,Sql Server,Database,Data Integrity,我有一个数据库,其中包含从唯一联系人id、姓名、地址、城市、邮政编码、电话、寻呼机、手机、网站等各种联系方式的详细信息。我注意到有重复的联系人(联系人id是不同的名字和姓氏是相同的,有些人有其他信息丢失,而其他人有信息)。如果一行有空列,而另一行没有空列,我想合并信息。是否可以使用MSSQL中的merge语句实现这一点,或者是否有另一个第三方程序将来自同一个表中记录的数据合并在一起。我不知道我将如何处理这个问题。我们将不胜感激 contactid salutation add1 add2

我有一个数据库,其中包含从唯一联系人id、姓名、地址、城市、邮政编码、电话、寻呼机、手机、网站等各种联系方式的详细信息。我注意到有重复的联系人(联系人id是不同的名字和姓氏是相同的,有些人有其他信息丢失,而其他人有信息)。如果一行有空列,而另一行没有空列,我想合并信息。是否可以使用MSSQL中的merge语句实现这一点,或者是否有另一个第三方程序将来自同一个表中记录的数据合并在一起。我不知道我将如何处理这个问题。我们将不胜感激

contactid salutation add1 add2 city zip phone officephone cellular email moddate contactrecordtype contacttitleid namefml A00JL043 1 OPC NYC L6B 0J3 (123)456-789 admin@admin.com 06/17/2011 0:00 CONTACT MCGUNTY ALISON A00JL6L2 LA L9H 7N5 (123)456-789 admin@admin.com 06/17/2011 0:00 CONTACT MCGUNTY ALISON A00JL9Z9 1 OPC LA L9H 7N5 (123)456-789 (123)456-789 admin@admin.com 06/20/2011 0:00 CONTACT MCGUNTY ALISON A00JM5AZ LA L9H 7N5 (123)456-789 (123)456-789 admin@admin.com 06/24/2011 0:00 CONTACT MCGUNTY ALISON A00JP8FW LA L9H 7N5 (123)456-789 admin@admin.com 07/18/2011 0:00 CONTACT WORKER MCGUNTY ALISON A00JQZ0Q SUITE 300 LA 6589503 ( ) - admin@admin.com 08/02/2011 0:00 CONTACT STUDENT MCGUNTY ALISON A00JT9AD LA ( ) - ( ) - admin@admin.com 08/17/2011 0:00 CONTACT MCGUNTY ALISON A00K5ZJ9 LA admin@admin.com 11/01/2011 0:00 CONTACT MCGUNTY ALISON A00KMQ67 MS. 1 OPC SUITE 100 LA L9H 7N5 ( ) - ( ) - admin@admin.com 03/20/2012 0:00 CONTACT MCGUNTY ALISON A00KPL1V LA L9H 7N5 ( ) - (123)456-789 12658962 tor@check.com NULL CONTACT MCGUNTY ALISON A00KUT7A LA L9H 7N5 (123)456-789 NULL CONTACT WORKER MCGUNTY ALISON contactid称呼add1 add2城市邮政电话办公室手机电子邮件moddate contactrecordtype contacttitleid namefml A00JL043 1 OPC NYC L6B 0J3(123)456-789admin@admin.com2011年6月17日0:00联系MCGUNTY ALISON A00JL6L2 LA L9H 7N5(123)456-789admin@admin.com2011年6月17日0:00联系MCGUNTY ALISON A00JL9Z9 1 OPC LA L9H 7N5(123)456-789(123)456-789admin@admin.com2011年6月20日0:00联系MCGUNTY ALISON A00JM5AZ LA L9H 7N5(123)456-789(123)456-789admin@admin.com2011年6月24日0:00联系MCGUNTY ALISON A00JP8FW LA L9H 7N5(123)456-789admin@admin.com2011年7月18日0:00联系工人MCGUNTY ALISON A00JQZ0Q套件300 LA 6589503()-admin@admin.com2011年2月8日0:00联系学生MCGUNTY ALISON A00JT9AD LA()-()-admin@admin.com2011年8月17日0:00联系MCGUNTY ALISON A00K5ZJ9 LAadmin@admin.com2011年11月1日0:00联系MCGUNTY ALISON A00KMQ67 MS.1 OPC套件100 LA L9H 7N5()-()-admin@admin.com2012年3月20日0:00联系MCGUNTY ALISON A00KPL1V LA L9H 7N5()-(123)456-789 12658962tor@check.com零触点MCGUNTY ALISON A00KUT7A LA L9H 7N5(123)456-789零触点工作人员MCGUNTY ALISON
您应该使用适当的规范化(消除数据冗余)重新设计您的表结构。我将删除重复数据,使用此链接删除表中的重复数据,希望这是有用的

对两个表进行设置差异(根据您的业务规则)并只插入不存在的表?看起来是非常基本的SQL…同意,OP似乎从未接触过SQL,因为他/她能够做到这一点…我不想在两个表之间寻找差异。我正在寻找一种方法,从同一个表中合并与联系人相关的所有信息(即多条记录合并为1条记录)。例如,共有10个姓名相同的联系人,所有联系人的信息都不同,有些联系人的信息相同,有些联系人为空,有些联系人已填写。你将如何合并这个。我可以设置差异,这不是问题。问题是,您如何比较它们,并说从1接收有冲突的电子邮件等。在回答用户提出的问题之前,请仔细阅读。@user3470756-您需要给我们一些表格结构示例行等。这样便于人们提供帮助。这就是它的工作原理。谢谢。我读过这篇文章。但这并不能真正解释我将如何去做这件事。在这里,重新设计不是一个选项。它包含多年的数据。要进行故障排除,请根据您的场景创建一个包含重复行的虚拟表,并使用此示例进行解释