Sql server 行号中的SQL ORDER BY子句错误

Sql server 行号中的SQL ORDER BY子句错误,sql-server,row-number,Sql Server,Row Number,我想使用ROW_NUMBER()函数并获取第一个和最新的值。 我写下面的问题。但我犯了个错误 ORDER BY子句在视图、内联函数、派生表、子查询和公共表表达式中无效,除非还指定了TOP、OFFSET或FOR XML 帮我解决这个问题。下面是sql查询 SELECT * FROM( SELECT OPP_ID,PRJ_ID, ROW_NUMBER() OVER (PARTITION BY OPP_ID ORDER BY MAX(CREATION_DATE) DESC)

我想使用ROW_NUMBER()函数并获取第一个和最新的值。 我写下面的问题。但我犯了个错误

ORDER BY子句在视图、内联函数、派生表、子查询和公共表表达式中无效,除非还指定了TOP、OFFSET或FOR XML


帮我解决这个问题。下面是sql查询

SELECT *
FROM(
    SELECT OPP_ID,PRJ_ID,
        ROW_NUMBER() OVER (PARTITION BY OPP_ID ORDER BY MAX(CREATION_DATE) DESC) AS RN
    FROM OPPOR
    GROUP BY OPP_ID,PRJ_ID
    ORDER BY MAX(CREATION_DATE) DESC) OP
WHERE OP.RN = 1

row\u number
函数可以自己进行聚合和排序,因此无需在子查询中使用
groupby
order by
order by
在子查询中不起作用)。不过,有点不清楚您是想通过opp\u id还是opp\u id和prj\u id进行分区。但这应该是你想要的:

SELECT *
FROM(
    SELECT OPP_ID,PRJ_ID,
        ROW_NUMBER() OVER (PARTITION BY OPP_ID ORDER BY CREATION_DATE DESC) AS RN
    FROM OPPOR
    ) OP
WHERE OP.RN = 1

不能在子查询中使用ORDER BY