【发布时间】:2025-12-22 13:00:11
【问题描述】:
我正在使用 SQL Server 2017 编写一个查询来确定员工的电子邮件,如下所示:
firstname.lastname123@email.com.
这三位数字是其员工 ID 的一部分。 (我没有选择这种方式来确定邮件,无法更改)。
我遇到了一个问题,即恰好有员工同名并且员工 ID 的最后三位数字相同。发生这种情况时,我需要按顺序在电子邮件中添加一个数字以使它们独一无二,即
示例:
姓名:John Doe,员工 ID:00123 john.doe123@email.com
姓名:John Doe,员工 ID:12123 john.doe1231@email.com
姓名:John Doe,员工 ID:98123 john.doe1232@email.com
我不需要假设会有超过 10 个相同的姓名和号码,因此电子邮件中不应出现超过 4 位数字的情况。此外,它确定谁的电子邮件中数字较小的方式是按员工 ID 的顺序。具有较低员工 ID 的人具有上述顺序中较早的电子邮件。
创建他们的电子邮件的查询只是提取他们 ID 的名字、姓氏和最后三位数字,并将它们连接到一个列中。 (first + '.' + last + right(em_id,3) + 'email.com')
如果存在重复项,我应该如何/如何实施以创建上述所需的结果?
【问题讨论】:
-
您考虑过添加
ROW_NUMBER()吗?
标签: sql sql-server sql-server-2017