我有下表,我需要从中获取最后100个条目(按时间戳记排序),但查询应返回绑定到前3列(ProcessId,LevelNodeType和NodeTypeId)的最后100个条目。
ProcessId 4,LevelNodeType 1,NodeType 4具有7个条目。我需要构建一个查询,该查询将为每个ProcessId,LevelNodeType和NodeType组合返回最后1000个条目。
我希望我对此解释得足够清楚。
在C ++中,我可以很容易地做到这一点,方法是执行“全选”,然后过滤代码,但这并不是重点。我应该能够建立一个查询,其中Sql Server将为我执行此操作。
非常感谢您的帮助。
答案 0 :(得分:1)
使用row_number()
select t.*
from (select t.*,
row_number() over (partition by ProcessId, LevelNodeType, NodeType order by timestamp desc) as seqnum
from t
) t
where seqnum <= 1000;