一个sql server查询截止某个日期最新的记录

工具:sql server 2008 R2
给定一个日期,查询截止这个日期最新的一笔记录,例如查询表table中截止2021/6/30最新的一笔总股本记录。
如下图:

img

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一下完事