Sql server 如何使用CTE获取最后5行?
我在使用CTE时遇到问题Sql server 如何使用CTE获取最后5行?,sql-server,Sql Server,我在使用CTE时遇到问题 WITH CTE AS ( SELECT ROW_NUMBER() OVER (PARTITION BY #TEMPTABLE.Id order by #TEMPTABLE.Id) AS 'RowNo', #TEMPTABLE.Id, #TEMPTABLE.UserId, #TEMPTABLE.Code, #TEMPTABLE.CodeDesc FROM #TEMPTAB
WITH CTE AS
(
SELECT
ROW_NUMBER() OVER (PARTITION BY #TEMPTABLE.Id order by #TEMPTABLE.Id) AS 'RowNo',
#TEMPTABLE.Id,
#TEMPTABLE.UserId,
#TEMPTABLE.Code,
#TEMPTABLE.CodeDesc
FROM #TEMPTABLE
)
SELECT DISTINCT Id, UserId,Code,CodeDesc
FROM CTE
where RowNo <=5
从这个查询中,我想得到最后5行。但我总是排在前5排。请在这方面给我一个解决方案。将降序描述添加到ROW_NUMBER的order BY子句中,默认情况下它是升序ASC,这就是为什么您得到前5行,请尝试以下操作:
WITH CTE AS
(
SELECT
ROW_NUMBER() OVER (PARTITION BY #TEMPTABLE.Id ORDER BY #TEMPTABLE.ActionId DESC) AS 'RowNo',
#TEMPTABLE.Id,
#TEMPTABLE.UserId,
#TEMPTABLE.Code,
#TEMPTABLE.CodeDesc
FROM #TEMPTABLE
)
SELECT DISTINCT RowNo,Id, UserId,Code,CodeDesc
FROM CTE
WHERE RowNo <=5
试着在您的订单中使用DESC。您真的想要RowNo和CTE吗?如果没有,有一个更简单的方法来实现。我想从一组数据中获取最后5个数据。请告诉我另一种方法你的Template.id是否包含重复的值?是的,很容易。id将具有重复的值。我在订单中添加了Desc by。有关您的信息,Id是唯一的Id。请检查下表。RowNo Id用户Id代码Desc 1 45 83 A001阻塞2 45 84 A002体液3 45 88 A006破裂4 45 91 A009损坏5 45 93 A011污物对不起我的错误。谢谢你的帮助。