我正在尝试编写一个查询,该查询返回具有唯一人员 ID、地点 ID 以及 60 分钟内第一次访问的值。
这里接近我需要的..
SELECT * FROM
(
SELECT
RANK() OVER (PARTITION BY A.PersonId, A.PlaceId,
DATEDIFF(hh, A.Visit_Datetime, GETDATE()) ORDER BY A.Visit_Datetime) AS RNK,
A.RecordId,
A.PersonId,
A.PlaceId
FROM
Table A
) A
WHERE
A.Rnk = 1
问题在于,如果一个人在上午 10:50 访问,然后在上午 11:10 创建第二条记录,则两条记录都被列为 1。我需要按人、地点和 60 分钟范围对这些记录进行排名.
我希望这是有道理的。谢谢您的帮助。