工具:sql server 2008 R2
给定一个日期,查询截止这个日期最新的一笔记录,例如查询表table中截止2021/6/30最新的一笔总股本记录。
如下图:
table改为表名
select t2."代码",t2."日期",t2."总股本"
from
(select "代码", max ("日期") as md from table where "日期" <=to_date('2021-06-30','YYYY-MM-DD') group by "代码") t1
left join
table t2
on t1."代码" = t2."代码" and t1.md = t2."日期"
参考实现:
select * from table where datetime >= '2021-6-30' order by datetime desc limit 1;
如有帮助欢迎采纳!
select * from table where datetime <= '2021-6-30' order by datetime desc limit 1;
筛选以前到2021-6-30的数据,
order by datetime desc :根据datetime 降序排序
https://blog.csdn.net/SYSZ520/article/details/116235694
limit 1:取第一条
https://blog.csdn.net/weixin_39931923/article/details/111097433
select top 1 * from table where datetime <= '2021-6-30' order by datetime desc
limit关键字是mysql里面的。
sqlserver是top
top不行,我想要一次性提取三条记录,不是一条记录,top1只能提取一条记录
你想要不同代码的记录,那肯定要先group by呀
而你要最新的记录,group by前面select要写max(时间)
最后,你需要截止某一日期,那就加个where条件过滤一下
如果不好组合,也可以嵌套一下,逻辑并不复杂
比如内层先过滤出符合时间条件的数据,外层再group by一下完事