【发布时间】:2009-08-27 20:44:59
【问题描述】:
在 SQL Server 2005 中,我有一个成功销售的输入表,以及包含已知客户信息及其详细信息的各种表。对于每一行销售,我需要匹配 0 或 1 个已知客户。
我们从销售表中得到以下信息:
服务标识,
地址,
邮政编码,
电子邮件地址,
家庭电话,
名,
姓氏
客户信息包括所有这些,以及“LastTransaction”日期。
这些字段中的任何一个都可以映射回 0 个或多个客户。我们将销售表中的 ServiceId、Address+ZipCode、EmailAddress 或 HomePhone 与客户完全匹配的任何时间计为匹配。
问题在于我们拥有许多客户的信息,有时是同一家庭的多个客户。这意味着我们可能在同一所房子里有 John Doe、Jane Doe、Jim Doe 和 Bob Doe。它们都将在 Address+ZipCode 和 HomePhone 上匹配 - 并且可能不止一个在 ServiceId 上匹配。
我需要某种方式在交易中优雅地跟踪客户的“最佳”匹配。如果一个匹配 6 个字段,而其他只匹配 5 个,则该客户应与该记录保持匹配。在多个匹配 5 且没有匹配更多的情况下,应保留最近的 LastTransaction 日期。
任何想法都将不胜感激。
更新:为了更清楚一点,我正在寻找一种好方法来验证数据行中完全匹配的数量,并根据该信息选择要关联的行。如果姓氏是“Doe”,它必须与客户姓氏完全匹配,才能算作匹配参数,而不是非常接近的匹配。
【问题讨论】:
标签: sql sql-server-2005