2016-01-06 90 views
6

我正在尝试清理前员工创建的邮件订阅者数据库。我已经能够整合和解决大部分问题(主要是重复的),但是我有订阅者的实例有重复的记录,因为他们订阅了多个区域。我想要做的是合并这些重复的记录,到1SQL如何将相似的记录合并到同一个表中的单个行中?

这里是一个重复的记录,我想一个绝密实际的例子来合并:

id  first  last address truck machinery gl ne nw 
------------------------------------------------------------------------ 
1  Chuck  G.... 12 Lorem 1      1 
2  Chuck  G.... 12 Lorem   1      1 
3  Chuck  G.... 12 Lorem   1     1 

而且我想合并2进1分的记录,并删除所有副本(有些有多达9个重复)是这样的:

id  first  last address truck machinery gl ne nw 
------------------------------------------------------------------------ 
1  Chuck  G.... 12 Lorem 1  1   1  1  1 
+0

如果某些行在同一列中包含不同的值,例如machinery = 1,2,3?必须选择哪个值? – krokodilko

+0

在这些情况下,它总是只有'1'或NULL。其目的是简单地定义他们是否订阅该版本。因此,如果重复行中任何位置的该列中存在“1”,则应使用“1”。 –

回答

5

使用Group ByMax/Min

SELECT id, 
     first, 
     last, 
     address, 
     Max(truck)  AS truck, 
     Max(machinery) AS machinery, 
     Max(gl)  AS gl, 
     Max(ne)  AS ne, 
     Max(nw)  AS nw 
FROM yourtable 
GROUP BY id, 
      first, 
      last, 
      address 
+0

辉煌。很简单。使用这种选择,我可以创建一个新的订户列表,而不会有任何重复,并且合并所有适当的数据。 –