我有表包含列登录和电话的用户,并且我有包含列掩码和区域的表格GeoPhone。INNER JOIN结果包含重复登录
电话存储为varchar(“+380981234567”)。掩码存储为varchar(“+38098”)。面具重叠,例如+380和+38098。
我需要一个加入用户和GeoPhone表的视图,并通过最长匹配的掩码为每个登录分配区域。
我写SQL语句以下,但结果包含重复登录,我不知道如何避免这一点:
SELECT TOP (5000)
Users.Login, Users.Phone, GeoPhone.Region, LEN(GeoPhone.Mask) AS MaskLen
FROM Users
INNER JOIN GeoPhone ON LEFT(Users.Phone, LEN(GeoPhone.Mask)) = GeoPhone.Mask
ORDER BY Users.Login, MaskLen DESC
请帮助完善它。
你想,如果你有两个记录在地震检波器,其中有一个为“最长匹配的面具”领带做的事,而且SQL服务器的什么版本你有? –