试图在引用不同的表时获得sql中一列的最大值
本文关键字:sql 最大值 一列 引用 | 更新日期: 2023-09-27 18:26:40
我有一个问题,关于如何访问SQL代码中gradterm的最大值?下面是我的纯代码示例:
SELECT
Ceremony.Date, People.name, People.age
FROM
people
JOIN
Ceremony ON people.grad = Ceremony.grad
正如您所看到的,我使用两个表的grad列来根据people
表中的grad来显示Ceremony
表的日期。以下是我认为可以获得最大梯度值的方法:
SELECT
Ceremony.Date, people.name, people.age
FROM
people
JOIN
Ceremony ON MAX(people.grad) = MAX(Ceremony.grad)
当我试图执行它时,我得到了这个错误:
聚合不能出现在ON子句中,除非它在HAVING中的子查询中子句或选择列表,并且在外部引用中聚合列。
我确实尝试过用MAX
函数来执行Ceremony.Date
,但没有成功。这里还有一个表格的例子:
people
表格:
|name|age|gradterm|
-------------------
|jake|20 |A |
|joe |23 |B |
Ceremony
表格:
|Date |gradterm|
--------------------
|Dec 21 | A |
|Fall 21 | B |
当人员表"A"中的gradterm
时,我用来显示SQL数据的GridView(通过存储过程)将显示"Dec 21"作为Ceremony
日期。此外,如果人员表中的gradterm为"B",则网格视图将显示"秋季21"。我只希望它在与典礼日期进行比较时获得最大成绩。我提前感谢大家的帮助!
基本上,在进行聚合之前,您需要根据其他字段进行分组
SELECT c.Date, People.name, People.age, c.GradTerm
FROM people
INNER JOIN (SELECT Date, MAX(grad) [GradTerm]
FROM Ceremony
GROUP BY Date) c
ON people.grad = c.grad