У меня есть таблица с идентификаторами столбцов, FIELD1, FIELD2, всего типа NUMBER.Выберите max из вычисленного столбца рядом с другими столбцами
Я хочу найти MAX функции на FIELD1 и FIELD2 и отобразить ее рядом с идентификатором.
Стараюсь
SELECT ID, MAX(SQRT(FIELD1 + FIELD2)) AS CALC
FROM TABLE;
Но она возвращает ORA-00937: not a single-group group function
.
Я пробовал решения в this thread, но у них есть свои ошибки.
SELECT * FROM (
SELECT ID, SQRT(FIELD1 + FIELD2) AS CALC,
RANK() OVER (ORDER BY CALC DESC) AS RANKING
FROM TABLE
)
WHERE RANKING = 1;
дает ошибку
ORA-06553: PLS-306: wrong number or types of arguments in call to
'OGC_CALC'
и так делает
SELECT ID, SQRT(FIELD1 + FIELD2) AS CALC
FROM TABLE
WHERE CALC = (
SELECT MAX(CALC)
FROM TABLE
);
Использование Oracle Database 11g Express Edition Release 11.2.0.2.0.
Как я могу заставить это работать? Благодарю.
К сожалению, извините. Я написал этот второй пример неправильно. Это должен был быть SELECT ID, MAX (SQRT (FIELD1 + FIELD2) AS CALC. Но в любом случае, нет, ваш ответ не тот, который я ищу. Я хочу, чтобы возвращался результат * single *, самый высокий из таблицы GROUP BY в вашем примере выводит сотни результатов. –
Обе эти функции блестяще. Спасибо. –
@JimCullen - Обратите внимание, что эти запросы выполняют разные вещи, например, первая может возвращать более одной строки, вторая - не может – Aleksej