0

我有一个棘手的问题,我不介意提供一点帮助,我已经使用我在这里和其他地方的查询取得了一些进展,但现在我被严重难住了。

我有一个邮件列表,其中包含许多近乎重复的内容,我试图将它们组合成一个有意义的行,并获取诸如此类的数据。

Title Forename Surname  Address1      Postcode Phone    Age   Income    Ownership   Gas

Mrs   D         Andrews 122 Somewhere BH10     123456   66-70           Homeowner 
Ms    Diane     Andrews 122 Somewhere BH10     123456         £25-40                EDF

并沿线排成一排

Title Forename Surname  Address1      Postcode Phone    Age   Income    Ownership   Gas

Mrs   Diane     Andrews 122 Somewhere BH10     123456   66-70 £25-40    Homeowner   EDF

我有超过 1.27 亿条记录,大多数以类似的模式重复,但没有明确的逻辑,正如我添加身份字段时所证明的那样。我还有超过 90 列要考虑,所以这有点工作!数据没有明确的模式,所以我想我可能有一个巨大的案例陈述来尝试超越。

使用下面的代码,我可以在只返回全名上获得一个不错的开始,但使用数据模式 - 尝试跨行比较字段如下。

SELECT c1.*
FROM
    Mailing c1
    JOIN
    Mailingc2 ON c1.Telephone1 = c2.Telephone1 AND c1.surname = c2.surname
WHERE
    len(c1.Forename) > len(c2.Forename)
AND c2.over_18  <> '' 
AND c1.Telephone1 = '123456'

有没有人对我应该如何进步有任何指示?我对讨论和想法持开放态度...

如果标记到处都是,我正在使用 SQL 2005 并提前道歉!

干杯,

乔恩

4

1 回答 1

0

假设所有具有相同姓氏和电话号码的人(所有人都有电话吗?)是同一个人,它会起作用吗?

INSERT INTO newtable <fieldnames>
SELECT lastname,phone,max(field3),max(field4)....
FROM oldtable
GROUP BY lastname,phone

但这会使约翰史密斯和杰克史密斯生活在一起成为一个人。

也许您应该考虑将其外包给某个地方的数据输入血汗工厂,前提是您已经对数据进行了预处理。:-)

和/或准备因错误捆绑而受到抨击。

也许添加类似“为了改善我们的绿色足迹,我们已将您地址上的 x 个列表合并在一起。如果您想单独邮寄,请联系我们”

于 2013-06-11T11:09:29.713 回答