我有一个棘手的问题,我不介意提供一点帮助,我已经使用我在这里和其他地方的查询取得了一些进展,但现在我被严重难住了。
我有一个邮件列表,其中包含许多近乎重复的内容,我试图将它们组合成一个有意义的行,并获取诸如此类的数据。
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 并提前道歉!
干杯,
乔恩