Tsql 如何选择每组最后5条记录

Tsql 如何选择每组最后5条记录,tsql,ssms,Tsql,Ssms,我正在做一个查询,查看特定时间段内的每个部分事务。根据部件的不同,它可能只有1个事务或1000个以上的事务。我只需要拉每部分的最后5个交易。这是我的查询权限,没有选择每个部件的最后5个事务 SELECT partnum, trandate, extcost FROM parttran WHERE trandate between '2012-05-15' and '2013-05-14' 我非常感谢你的帮助 在以下情况下总是有用的:具有如下窗口功能的 我非常

我正在做一个查询,查看特定时间段内的每个部分事务。根据部件的不同,它可能只有1个事务或1000个以上的事务。我只需要拉每部分的最后5个交易。这是我的查询权限,没有选择每个部件的最后5个事务

 SELECT     partnum, trandate, extcost
 FROM       parttran
 WHERE      trandate between '2012-05-15' and '2013-05-14'

我非常感谢你的帮助

在以下情况下总是有用的:具有如下窗口功能的


我非常感谢你的帮助!很抱歉,这让我很痛苦,但当我尝试运行它时,它告诉我:Msg 102,15级,状态1,第4行“=”附近的语法不正确。我认为它是在谈论=按rn=行数。你能帮我解决这个问题吗?再次感谢你所做的一切!如果您至少使用SQLServer2005,它应该可以工作。但是,因为我现在正在路上,所以我不能给你举个例子。我这方面的一个简单错误是,我添加了一个字段,没有在其中加一个逗号!!再次感谢大家!!!
WITH CTE AS
(
    SELECT  partnum, trandate, extcost,
            rn = ROW_NUMBER() OVER (PARTITION BY partnum ORDER BY trandate DESC)
    FROM    parttran
    WHERE   trandate between '2012-05-15' and '2013-05-14'
)
SELECT partnum, trandate, extcost FROM CTE WHERE rn <= 5