我有一个表格,其中包含网站访问者发送的消息。如果访问者发送了多条消息,我希望能够对这些消息进行分组。通过“对这些消息进行分组”,我的意思是显示在网页上分组的消息,而不是根据关系逻辑进行分组。 我想要这样的东西:
s email messageid
1 user1@mail.com 1
1 user1@mail.com 3
1 user1@mail.com 143
2 user2@mail.com 343
2 user2@mail.com 3
3 user3@mail.com 3
正如您所看到的,如果电子邮件相同,则“s”列具有相同的编号。
我试过了:
select ROW_NUMBER() over(partition by m.email order by m.email ) as s
我明白了:
s email messageid
1 user1@mail.com 1
2 user1@mail.com 3
3 user1@mail.com 143
1 user2@mail.com 343
2 user2@mail.com 3
1 user3@mail.com 3
计算每封电子邮件的序列。
答案 0 :(得分:3)
我认为s
是新列?您可以使用DENSE_RANK()
窗口功能:
SELECT DENSE_RANK() OVER(ORDER BY t.email) as [s],
t.email,t.messageid
FROM YourTable t