私はテーブルにログインと電話の列があり、私はテーブルのジオフォンに列とマスクが含まれています。INNER JOINの結果に重複したログインが含まれています
電話機はvarchar( "+380981234567")として保存されます。マスクはvarchar( "+38098")として格納されます。マスクは重複しています(例えば、+380と+38098)。
ユーザとジオフォンテーブルを結合し、最も長い時間マッチしたマスクでログインごとにリージョンを割り当てるビューが必要です。
私は、以下の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
それを改善するために助けてください。
ありますか? –