假设我有一个这样的支付表:
PaymentID INT,CustomerID INT,Value INT,PaidOn DATE
我想针对每个客户的最高付款运行查询.这是否可以使用单个SQL查询,以避免挖掘我不感兴趣的每一行 - 或者更糟糕的是,为每个客户运行查询?
我到目前为止所提出的最好的是:
SELECT CustomerID,MAX(Value)FROM Payments GROUP BY CustomerID;
但这并没有给我找到的行的PaymentId或PaidOn值.
select PaymentID, CustomerID, Value, PaidOn from payments where (customerID, value) in ( select customerID, max(value) from payments group by customerID );
请注意,如果每个客户有多个具有最大值的付款,则每个客户可以返回多行.