我有两个表,我试图从中运行查询以返回每个人的最大(或最高)事务。我应该注意,我无法更改表结构。相反,我只能提取数据。
人们
+-----------+ | 编号 | 姓名 | +-----------+ | 42 | 鲍勃 | | 65 | 特德 | | 99 | 斯图 | +-----------+
交易(没有主键)
+----------------------------------+ | 人 | 金额 | 日期 | +----------------------------------+ | 42 | 3 | 2030 年 9 月 14 日 | | 42 | 4 | 2015 年 7 月 2 日 | | 42 | *空* | 2020 年 2 月 4 日 | | 65 | 7 | 2010 年 1 月 3 日 | | 65 | 7 | 2020 年 5 月 20 日 | +----------------------------------+
最终,对于每个人,我想返回最高金额。如果这不起作用,那么我想查看日期并返回最近的日期。
所以,我希望我的查询返回:
+--------------------------------------------------------+ | 人名 | 姓名 | 金额 | 日期 | +--------------------------------------------------------+ | 42 | 鲍勃 | 4 | 2015 年 7 月 2 日 | (<- 最高金额) | 65 | 特德 | 7 | 2020 年 5 月 20 日 | (<- 最近的日期) | 99 | 斯图 | *空* | *空* | (<- 事务表中没有记录) +--------------------------------------------------------+
SELECT People.id, name, amount, date
FROM People
LEFT JOIN (
SELECT TOP 1 person_id
FROM Transactions
WHERE person_id = People.id
ORDER BY amount DESC, date ASC
)
ON People.id = person_id
我不知道我做错了什么,但我知道这是错的。任何帮助将非常感激。