【问题标题】:SQL ORDER BY clause ERROR in the ROW_NUMBERROW_NUMBER 中的 SQL ORDER BY 子句 ERROR
【发布时间】:2018-09-13 03:34:56
【问题描述】:

我想使用 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

【问题讨论】:

  • 你不能在子查询中使用 ORDER BY

标签: sql-server row-number


【解决方案1】:

row_number 函数可以进行自己的聚合和排序,因此无需在您的子查询中使用group byorder by(如您所见,order 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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-10-24
    • 2021-12-31
    • 2011-06-16
    • 2017-10-21
    • 2013-01-13
    • 1970-01-01
    • 1970-01-01
    • 2012-04-13
    相关资源
    最近更新 更多