0

我有一个关于如何在我的 SQL 代码中访问 gradterm 的最大值的问题?这是我的纯代码示例:

SELECT 
    Ceremony.Date, People.name, People.age
FROM 
    people
JOIN 
    Ceremony ON people.grad = Ceremony.grad

如您所见,我正在使用两个表的 grad 列来根据表中的 grad 显示表的Ceremony日期people。这是我认为可以获得最大毕业值的方法:

SELECT 
    Ceremony.Date, people.name, people.age
FROM 
    people
JOIN 
    Ceremony ON MAX(people.grad) = MAX(Ceremony.grad)

当我尝试执行它时出现此错误:

聚合不能出现在 ON 子句中,除非它在 ​​HAVING 子句或选择列表的子查询中,并且在外部引用中聚合的列。

我确实尝试过Ceremony.Date使用该MAX功能,但这没有用。这里还有一个表格的示例:

people桌子:

    |name|age|gradterm|
    -------------------
    |jake|20 |A       |
    |joe |23 |B       |

Ceremony桌子:

    |Date     |gradterm|
    --------------------
    |Dec 21   |   A    |
    |Fall 21  |   B    |

gradterm在人员表“A”中时,我用来显示我的 SQL 数据(通过存储过程)的 GridView 将显示“Dec 21”作为Ceremony日期。同样对于 peoples 表中的 gradterm 为“B”,gridview 将显示“Fall 21”。我只是希望它在比较它以获得仪式日期时获得最大的毕业期限。我提前感谢大家的帮助!

4

1 回答 1

1

基本上,您需要先按其他字段分组,然后才能进行聚合

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
于 2013-08-05T18:20:13.060 回答