SQL ORDER BY предложение ERROR в ROW_NUMBER - PullRequest
0 голосов
/ 13 сентября 2018

Я хочу использовать функцию 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

1 Ответ

0 голосов
/ 13 сентября 2018

Функция row_number может выполнять свою собственную агрегацию и упорядочение, поэтому нет необходимости использовать group by или order 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
...