我有一个顾客表,上面有id,full_name,电子邮件和电话
| id | full_name | email | phone |
| -- | -------------- | -------------------------- | ------------- |
| 1 | namita.robin | nr2035@gmail.com | +135698887445 |
| 2 | alfred.buka | rim_alfred@yahoo.com | +236588547811 |
| 3 | karim.tazi | kr_tzi@krtzi.ma | +212661845794 |
| 4 | | robinrobin@gmail.com | +135698887445 |
| 5 | cheri | robinrobin@gmail.com | +135698748788 |
| 6 | rim.rim | rim_alfred@yahoo.com | +245881148787 |
我想把至少有相同电子邮件或电话的客户分组。此示例的期望输出将是:
| id | full_name | email | phone | master_id |
| -- | -------------- | -------------------------- | ------------- | --------- |
| 1 | namita.robin | nr2035@gmail.com | +135698887445 | 1 |
| 2 | alfred.buka | rim_alfred@yahoo.com | +236588547811 | 2 |
| 3 | karim.tazi | kr_tzi@krtzi.ma | +212661845794 | 3 |
| 4 | | robinrobin@gmail.com | +135698887445 | 1 |
| 5 | cheri | robinrobin@gmail.com | +135698748788 | 1 |
| 6 | rim.rim | rim_alfred@yahoo.com | +245881148787 | 2 |
发布于 2022-03-29 06:29:48
您可以使用dense_rank()为同一电子邮件类型获取相同的id值。只从电子邮件列中获取电子邮件类型,然后按此顺序订购。
select * ,dense_rank() over(order by reverse(Substring(reverse(email),1,Charindex('@', reverse(email))-1)) ) as master_id
from customers
order by reverse(Substring(reverse(email),1,Charindex('@', reverse(email))-1))
https://stackoverflow.com/questions/71630282
复制相似问题