SQL ROW_NUMBER 中的 ORDER BY 子句错误

SQL ORDER BY clause ERROR in the ROW_NUMBER

我想使用 ROW_NUMBER() 函数并获取第一个和最新的值。 我写下面的查询。但是我得到一个错误。

The ORDER BY clause is invalid in views, inline functions, derived tables, subqueries, and common table expressions, unless TOP, OFFSET or FOR XML is also specified.


帮我解决问题。 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_number 函数可以自己进行聚合和排序,因此无需在子查询中使用 group byorder byorder by 在如您所见的子查询)。有点不清楚你是想 partition by opp_id 还是 opp_id 和 prj_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