【发布时间】:2017-10-26 14:07:17
【问题描述】:
您好,我有一个table,如下所示:
First Name | Last Name | Employee number
James Smith 1234
James Tim Smith 1234
Jim Baker 1234
Jen King 5678
Jenny King 5678
我想返回根据名字和姓氏组合将相同员工编号分配给不同人员的员工。 我基本上想返回映射到员工编号 1234 的记录,因为 Jim Barker 和 James Smith 绝对不是同一个人,但我们可以假设 Jen King 和 Jenny King 是同一个人。
谢谢
【问题讨论】:
-
用想要的结果编辑问题。
-
Fuzzy string comparison可能会有所帮助。谷歌并检查stackoverflow.com/questions/921978/fuzzy-matching-using-t-sql -
似乎是架构问题。您应该有一个存储姓名和员工编号的表,其中员工编号是根本不能重复的主键。其他任何地方都应该只使用员工编号,而不是重复存储名称。
-
“我们可以假设 Jen King 和 Jenny King 是同一个人”。 “安娜·史密斯”和“安娜贝尔·史密斯”也会这样吗?还有“安娜·史密斯”和“安娜玛丽亚·史密斯”?那么“安娜贝尔史密斯”会是“安娜玛丽亚史密斯”吗?显然,您需要的不仅仅是性格比较。包含名称匹配的某些表可能会或更好地手动对具有多个不同名称的所有员工编号进行比较。
-
您应该按员工编号对结果进行分组,并通过按姓氏或名字再次分组来过滤结果两次
标签: sql sql-server data-analysis