0

我有下表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

我正在寻找用户的最新信息EmailCell详细信息。我尝试运行如下查询

Select 
   Userid, 
   Max(ContactDetail),
   MAX(LoadDate) 
from 
   ContactDetails 
group by 
   Userid, ContactType;

但我知道这行不通。

任何人都可以提出一些建议以在单个或子查询中提取最新的电子邮件和单元格吗?

干杯! 君尼

4

1 回答 1

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
于 2013-04-30T08:02:47.477 回答