Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 如何使用CTE获取最后5行?_Sql Server - Fatal编程技术网

Sql server 如何使用CTE获取最后5行?

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

我在使用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 #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污物对不起我的错误。谢谢你的帮助。