我有以下表格ContactDetails
。此表包含手机和电子邮件。可以根据用户的最新联系人详细信息更新这些行。因此userid
(此处为1)可以通过电子邮件和单元格分组多行,如下所示。可以有多个用户2.3.4 ...等等
行如下
SrNo Userid ContactType ContactDetail LoadDate
1 1 Email x1.y@gmail.com 2013-01-01
2 1 Cell 12345678 2013-01-01
3 1 Email x2.y@gmail.com 2012-01-01
4 1 Cell 98765432 2012-01-01
5 1 Email x2.y@gmail.com 2011-01-01
6 1 Cell 987654321 2011-01-01
我正在寻找用户的最新Email
和Cell
详细信息。我尝试运行查询,如下所示
Select
Userid,
Max(ContactDetail),
MAX(LoadDate)
from
ContactDetails
group by
Userid, ContactType;
但我知道这不起作用。
有人可以提出一些建议,在单个或子查询中提取最新的电子邮件和单元格吗?
干杯! Junni
答案 0 :(得分:1)
您可以使用ROW_NUMBER()
选择最近感兴趣的行:
;With Ordered as (
select UserId,ContactType,ContactDetail,LoadDate,
ROW_NUMBER() OVER (
PARTITION BY UserID,ContactType
ORDER BY LoadDate DESC) as rn
from ContactDetails
)
select * from Ordered where rn = 1