我在使用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
Run Code Online (Sandbox Code Playgroud)
从这个查询,我想得到最后5行.但我总是得到前5行.请给我一个解决方案.
添加descending(DESC)order to ROW_NUMBER's 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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
96 次 |
| 最近记录: |