Мне нужно создать запрос T-SQL, который вернет самую высокую зарплату из таблицы job_positions
и имя человека, у которого есть это.Выберите MAX() вызывает сообщение об ошибке
До сих пор мое решение:
SELECT
MAX(e.salary) AS [Max salary]
, p.firstname + ' ' + p.lastname AS [THE LUCKY MAN]
FROM
persons p
JOIN
job_positions e ON (p.id_person = e.id_person)
Но это дает ошибку:
Msg 8120, Level 16, State 1, Line 67
Column 'persons.firstname' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.Msg 8120, Level 16, State 1, Line 67
Column 'persons.lastname' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.
Однако, это только кажется, что само за себя; Вероятно, проблема связана с функцией MAX
. После его удаления в результате получается таблица с полным именем и зарплатой. Интересно, почему он не может просто извлечь максимальный ряд ...
ну, сообщение сообщает вам, что такое ошибка. Вы используете 'MAX', но у вас есть еще один столбец, который у вас нет на агрегатной функции, или вы используете его в' GROUP BY'. Добавьте 'GROUP BY p.firstname + '' + p.lastname' в конце вашего запроса – Lamak
@Lamak То же самое, что и с ответом herbae:« Не работает - результат такой же, как если бы они не были «MAX», функции (полная таблица имен зарплат) ». – 0x6B6F77616C74