【发布时间】:2014-12-12 00:55:55
【问题描述】:
我需要创建一个 T-SQL 查询,该查询将返回 job_positions 表中的最高薪水以及拥有该薪水的人的姓名。
到目前为止,我的解决方案是:
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)
但这会产生错误:
消息 8120,第 16 层,状态 1,第 67 行
列“persons.firstname”在选择列表中无效,因为它不包含在 聚合函数或 GROUP BY 子句。消息 8120,第 16 层,状态 1,第 67 行
列“persons.lastname”在选择列表中无效,因为它既不包含在聚合函数中,也不包含在 GROUP BY 子句中。
但是,它似乎只是不言自明的;问题可能出在MAX 函数上。删除后,结果为全名-工资表。我想知道为什么它不能只提取最大行...
【问题讨论】:
-
好吧,消息告诉你错误是什么。您正在使用
MAX,但您有另一列在聚合函数上没有,也没有在GROUP BY上使用它。在查询末尾添加GROUP BY p.firstname+' '+p.lastname -
@Lamak 与herbae 的回答相同-“不起作用- 结果与没有“MAX”函数(完整的薪金表)相同。”
标签: sql sql-server tsql