尝试这个:
WITH MAXSessions
AS
(
SELECT
*,
ROW_NUMBER() OVER(PARTITION BY SessionID ORDER BY Date DESC) rownum
FROM Sessions
)
SELECT
SessionId,
Date,
firstname,
lastname
FROM MAXSessions
WHERE rownum = 1;
或者:
SELECT
s.SessionId,
s.Date,
s.firstname,
s.lastname
FROM Sessions s
INNER JOIN
(
SELECT SessionID, MAX(Date) LatestDate
FROM sessions
GROUP BY SessionID
) MAxs ON maxs.SessionID = s.SessionID
AND maxs.LatestDate = s.Date;
更新:要获取会话数,您可以执行以下操作:
SELECT
s.SessionId,
s.Date,
s.firstname,
s.lastname,
maxs.SessionsCount
FROM Sessions s
INNER JOIN
(
SELECT SessionID, COUNT(SessionID), SessionsCount, MAX(Date) LatestDate
FROM sessions
GROUP BY SessionID
) MAxs ON maxs.SessionID = s.SessionID
AND maxs.LatestDate = s.Date;