Sql server 行号中的SQL ORDER BY子句错误
我想使用ROW_NUMBER()函数并获取第一个和最新的值。 我写下面的问题。但我犯了个错误 ORDER BY子句在视图、内联函数、派生表、子查询和公共表表达式中无效,除非还指定了TOP、OFFSET或FOR XMLSql 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)
帮我解决这个问题。下面是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