首页 新闻 会员 周边

求一条SQL语句。

0
[已解决问题] 解决于 2017-06-29 16:38

一张表中有一列数据MaterialName,和SignDate,如图,我要取MaterialName相同,但最近时间的前三条数据。

SQL
你猜丶的主页 你猜丶 | 初学一级 | 园豆:183
提问于:2017-06-29 12:59
< >
分享
最佳答案
0
 select * from (select b.*,(select count(*)+1 from table where MaterialName=b.MaterialName and signDate> b.signDate) as countId
 from table b)a

 where a.countId<=3 
 order by a.countId desc;

百度查的,没建表,所以没测试。你可以试一下,感觉大致差不多,如果符合请采纳,谢谢~

奖励园豆:5
无殇-x | 初学一级 |园豆:9 | 2017-06-29 13:50
其他回答(5)
0

百度:分组取前几条

吴瑞祥 | 园豆:29449 (高人七级) | 2017-06-29 13:21
0

有点没明白。最近时间的前三条数据   是指所有数据中 最近时间的前3条  还是根据 MaterialName分组后,每一组信息的最近时间前3条

青语 | 园豆:1000 (小虾三级) | 2017-06-29 13:22

MaterialName分组后

支持(0) 反对(0) 你猜丶 | 园豆:183 (初学一级) | 2017-06-29 14:01
0

select MaterialName from (select * from 表名 order by  SignDate desc ) a  group by MaterialName 

按最新时间排序 

依照MaterialName 分组 

是否符合?

夜里挑键戳灯 | 园豆:299 (菜鸟二级) | 2017-06-29 13:34
0

select a.* from table_name a where exists (select count(*) from table_name where table_name.MaterialName= a.MaterialName and table_name.SignDate > a.SignDate  having Count(*) < 3) order by a.SignDate desc

limes | 园豆:202 (菜鸟二级) | 2017-06-29 13:55

你这个最后加上where查询

支持(0) 反对(0) 你猜丶 | 园豆:183 (初学一级) | 2017-06-29 15:22

你这个最后怎么加上Where查询,我一加就报错

支持(0) 反对(0) 你猜丶 | 园豆:183 (初学一级) | 2017-07-03 09:27
0

也不知你具体要的啥,就按每组信息的 最近时间的前三条弄了,下面是sql和结果,Oracle的

MrZhan | 园豆:167 (初学一级) | 2017-06-29 14:03
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册