【发布时间】:2021-12-23 20:35:05
【问题描述】:
我有一张桌子(所有代码都在fiddle)。
id nom bal bal_dt val_dt
1 Bill 75.00 2019-11-01 2020-03-31
1 Bill 100.00 2020-04-01 2020-07-31
1 Bill 500.00 2020-08-01 2021-11-11 -- record goes over New Year 2021
2 Ben 5.00 2019-11-01 2020-03-31
2 Ben 10.00 2020-04-01 2020-07-31
2 Ben 100.00 2020-08-01 2021-11-11 -- record goes over New Year 2021
6 rows
主键是 (id, bal_dt) - 每天只有一笔存款。
我想在 2021 年新年(或 最后条记录。
我尝试来自here 的代码如下。
select a2.id, a2.nom, a2.val_dt,
(select count(*) from account a1 where a1.id < a2.id) AS rn
from account a2
where a2.val_dt <= '2021-01-01 00:00:00'
order by val_dt desc;
但结果并不好。
id nom val_dt rn
1 Bill 2020-07-31 0
2 Ben 2020-07-31 3
1 Bill 2020-03-31 0
2 Ben 2020-03-31 3
我想要类似的东西
id nom rn val_dt bal
1 Bill 1 2020-08-01 500.00
2 Ben 1 2020-08-01 100.00
所以我为比尔和本选择了唱片。请问有什么帮助吗?
注意 - 我不需要 @variables 并且不假设只有 3 条记录或只有 2 个帐户,而且日期不同,而不仅仅是最后日期!
【问题讨论】:
标签: mysql sql subquery mysql-5.6