0

我有一个包含重复成员名称的表,但这些重复项也有多个日期和特定 ID。我想要具有最近日期的成员姓名行(因为成员可能一天被呼叫多次)和最大的 CallID 号码。

MemberID    FirstName     LastName     CallDate     CallID
 0123         Carl         Jones      2019-03-01    123456
 0123         Carl         Jones      2020-10-12    215789
 0123         Carl         Jones      2020-10-12    312546
 2045        Sarah         Marty      2021-05-09    387945
 2045        Sarah         Marty      2021-08-11    398712
 4025         Jane         Smith      2021-10-18    754662
 4025         Jane         Smith      2021-11-03    761063
 8282         Suzy         Aaron      2019-12-12    443355
 8282         Suzy         Aaron      2019-12-12    443386

因此,该表的所需输出将是

MemberID    FirstName     LastName     CallDate     CallID
 0123         Carl         Jones      2020-10-12    312546
 2045        Sarah         Marty      2021-08-11    398712
 4025         Jane         Smith      2021-11-03    761063
 8282         Suzy         Aaron      2019-12-12    443386

我试过的查询是

SELECT DISTINCT MemberID, FirstName, LastName, MAX(CallDate) as CallDate, MAX(CallID) as CallID
FROM dbo.table 
GROUP BY MemberID, FirstName, LastName, CallDate, CallID 
ORDER BY LastName asc;

但我仍然会收到重复的姓名以及他们所有的通话日期和 CallID

4

2 回答 2

1

尝试从 group by 子句中删除 CallDate、CallID。

所以 :

SELECT MemberID, FirstName, LastName, MAX(CallDate) as CallDate, MAX(CallID) as CallID

FROM dbo.table 
GROUP BY MemberID, FirstName, LastName 

ORDER BY LastName asc;

希望应该这样做。

于 2021-11-15T17:58:31.460 回答
0

您可以使用窗口功能:

select * from (
   select * , row_number() over (partition by MemberID order by CallID desc) rn
   from tablename
) t where rn = 1
于 2021-11-15T18:00:07.580 回答