我在这里找到许多相关主题,但没有真正解决我的问题。按成绩最高的人,然后按日期分组
SalesTable:
PersonID | SaleAmount | SaleDate | TransactionID
6117 | 10 | 2013-03-13 | 1
6117 | 10 | 2013-03-11 | 2
6400 | 100 | 2013-03-12 | 3
6400 | 10 | 2013-02-05 | 4
6525 | 0 | 2013-03-14 | 5
6400 | 0 | 2013-04-01 | 6
我只是想从每个人的最高销售金额的交易。 如果来自同一人的所有交易具有相同的销售金额,则按日期返回最新的一笔交易。
预期的结果:
PersonID | SaleAmount | SaleDate | TransactionID
6117 | 10 | 2013-03-13 | 1
6400 | 100 | 2013-03-12 | 3
6525 | 0 | 2013-03-14 | 5
我能够通过组人以最高的销售没有问题,但不可能获得最新交易如果所有的销售金额从一个人是一样的。
select personid, max(saleamount) from SalesTable group by personid
这将是错误的
select personid, max(saleamount), max(saledate)
from SalesTable
group by personid
,因为它会给我错误的日期为6400
6117 | 10 | 2013-03-13 | 1
6400 | 100 | 2013-04-01 | 3
6525 | 0 | 2013-03-14 | 5
请注明您是RDBMS通过添加适当的标记(Oracle,SQL Se rver,MySQL等)。可能会有利用不被普遍支持的语言或产品功能的答案。此外,通过使用特定的RDBMS标记它,您的问题可能会得到更好的回答,以便人们更好地回答它 – Taryn 2013-03-19 20:13:59