SQL多重复数据中取时间最近的一条进行求和,同一张表

在同一张表里table a,数据如下:
CarNo Money Time
1 4 2017/12/21
2 6 2017/12/22
1 3 2017/12/23
3 5 2017/12/24
2 5 2017/12/25
3 4 2017/12/26
3 1 2017/12/27
2 4 2017/12/28

想要的结果是求当CarNo相同时取时间最近的一条,然后求和Money的值。

也就是,从table a中取出
CarNo Money Time
1 3 2017/12/23
2 4 2017/12/28
3 1 2017/12/27

然后对money进行求和,得到的值应该是8.

请问,这样的SQL要怎么写?

你这结果不对吧,carno=1的时间最小的2017/12/21,你写的2017/12/23

select sum(t.money)
from
(select a.* from a,
(select carno,min(time) time from a group by carno) b
where a.carno=b.carno and a.time=b.time) t

基本这样,各种数据库语句差不多都是这个。

追问

谢谢回答,是要距离现在时间最近的一条,所以是CarNo=1时取的时间是2017/12/23,请问如果是这样的话,是不是将您提供的答案中min()换成max(),就可以啦?

追答

对

温馨提示:答案为网友推荐,仅供参考
相似回答