在SQL中解决Dulicate删除问题?

时间:2016-05-17 21:12:27

标签: sql

我有一张桌子,可容纳约24,000排病人。我们必须向病人发邮件,只想要一个人去同一个家。

我们在自己的专栏中已经有了姓氏。

COL A                    COL E 

SMITH                100 Main St.
SMITH                100 Main Street

我需要编码条件:

如果姓氏相同且街道号码相同 并且第一个单词是相同的(必须扩展到2个名称,甚至3个命名的街道)

所以在这里,我有SMITH,100和MAIN,然后我想只输出第一行。

这可以用普通的SQL编码还是需要存储过程?

2 个答案:

答案 0 :(得分:1)

我假设美国地址,但同样的原则适用于任何地方。

要清除重复项,您需要标准化地址字段,使其格式一致, 仅在标准化后 ,您可以查询表中的重复项。您需要在sql server之外使用一些工具才能正确执行此操作。

市场上有几种工具。 USPS实际上有一个地址标准化格式,你需要一个符合邮局要求的工具,因为它包含一个数据库(所有提供商都使用,无论实施情况如何),为他们的工具提供正确的地址编号范围,方向性(N, S,W,E),前缀/后缀(Street,Avenue等)等等。

任何希望通过" USPS认证"给出一组测试数据来运行他们的工具,生成一个文本文件发送回USPS。该文件的内容必须匹配响应文件(由USPS创建,不与公众共享)100%以满足其严格的标准。

这是USPS的参考:http://pe.usps.gov/cpim/ftp/pubs/Pub28/pub28.pdf它不会直接帮助你,但它会帮助你理解。

手动解析,没有下面的USPS数据库,失败了。

答案 1 :(得分:0)

这是一个让你入门的例子。如果只有一个数字和一个单词,则存在ELSE条件,否则额外的CHARINDEX将导致错误。只需在真实查询中用col_E替换@blah。

.bashrc