SQL-与聚合混淆

SQL-与聚合混淆,sql,aggregate,Sql,Aggregate,我目前有以下问题: select customers.emailaddress, MAX(orders.orderdate) as "last order" from orders join customers on orders.customerID = customers.customerID group by customers.emailaddress 这给了我电子邮件和最后的订单日期。在“Orders”表中,有一个名为“PaymentTotal”的字段,如何根据MAX(O

我目前有以下问题:

select
  customers.emailaddress,
  MAX(orders.orderdate) as "last order"
from orders
join customers
  on orders.customerID = customers.customerID
group by customers.emailaddress

这给了我电子邮件和最后的订单日期。在“Orders”表中,有一个名为“PaymentTotal”的字段,如何根据MAX(Orders.orderdate)返回的值获取该字段?(即我正试图获得每封电子邮件最后一次订购的数量)

了解您所谈论的是哪台SQL server会很有用。PostgreSQL、Oracle、SQL Server等等…我认为它是MS-SQL,它与我们使用的基于ASP(.net)的购物车打包在一起(因此我假设它是MS),了解您正在谈论的SQL Server会很有用。PostgreSQL、Oracle、SQL Server等…我认为它是MS-SQL,它与我们使用的基于ASP(.net)的购物车打包在一起(因此我假设它是MS),我希望每个客户的订单日期必须是唯一的,否则这将不会返回预期的结果。我想知道orderdate列的类型是什么…orderdate是datetime。谢谢你的帮助。那么,有人能分析一下上面的查询发生了什么吗?我真的很想学习,这样我下次可以自己做:)子查询“om”找到客户id和日期,然后根据该值加入订单和客户表,以检索该订单的客户和合计。我希望每个客户的订单日期必须是唯一的,否则这将不会返回预期结果。我想知道orderdate列的类型是什么…orderdate是datetime。谢谢你的帮助。那么,有人能分析一下上面的查询发生了什么吗?我真的很想学习,这样下次我就可以自己做了:)子查询“om”找到客户id和日期,然后根据该值加入订单和客户表,以检索该订单的客户和合计。
select c.EmailAddress, om.MaxOrderDate, o.PaymentTotal
from (
    select CustomerID, MAX(orders.orderdate) as MaxOrderDate
    from orders 
    group by CustomerID
) om
inner join orders o on om.CustomerID = o.CustomerID
    and om.MaxOrderDate = o.orderdate
inner join customers c on o.customerID = c.customerID