欢迎来到Doc100.Net免费学习资源知识分享平台!
您的位置:首页 > 程序异常 >

怎么找出第1大、第2大、与第大3日期

更新时间: 2014-01-05 02:23:14 责任编辑: Author_N1

 

如何找出第1大、第2大、与第大3日期
先找出第2大的日期

再找出第3大日期

数据如下
A列      日期列
A 2001-1-1
A 2001-1-2
A 2001-1-3
A 2001-1-4
A 2001-1-5
A 2001-1-6
A 2001-1-7
A 2001-1-8
A 2001-1-9
A 2001-1-10
A 2001-1-11
B 2003-1-1
B 2003-1-2
B 2003-1-3
B 2003-1-4
B 2003-1-5
B 2003-1-6
B 2003-1-7
B 2003-1-8
B 2003-1-9
B 2003-1-10
B 2003-1-11
C 2002-1-1
C 2002-1-2
C 2002-1-3
C 2002-1-4
C 2002-1-5
C 2002-1-6
C 2002-1-7
C 2002-1-8
C 2002-1-9
C 2002-1-10
C 2002-1-11

日前第一大是这么找的

select r1.a,r1.date 
from table_1 as r1  
left join table_1 as r2 on r2.a=r1.a and r2.date >r1.date
where r2.date is null 

--参考方法--
select *
from table_1
order by date desc
fetch first 3 rows only
--参考方法--
select *
from tb A
where 1=(select count(*) from tb B where A.日期<B.日期)

select *
from tb A
where 2=(select count(*) from tb B where A.日期<B.日期)

select *
from tb A
where 3=(select count(*) from tb B where A.日期<B.日期)
--参考方法--
引用:
select *
from table_1
order by date desc
fetch first 3 rows only


这个应该可以,取到的结果放在list里面,按下标取list中的元素即可。
--参考方法--
select * from
(
select *
from table_1
order by date desc
fetch first 2 rows only
) t
order by date
fetch first 1 rows only
--参考方法--
SELECT * FROM AA A1 WHERE 3>(SELECT COUNT(*) FROM AA WHERE A1.a=a AND 
A1.日期<=日期)
--参考方法--
row_number over

select ROW_NUMBER() OVER(PARTITION BY A列 ORDER BY 日期列) as sxh,
a列,日期列 from a表 where sxh>=3
手边没db2 大概想了下 主要是就是这个olap函数的使用 比上面简单点了
上一篇:上一篇
下一篇:下一篇

 

随机推荐程序问答结果

 

 

如对文章有任何疑问请提交到问题反馈,或者您对内容不满意,请您反馈给我们DOC100.NET论坛发贴求解。
DOC100.NET资源网,机器学习分类整理更新日期::2014-01-05 02:23:14
如需转载,请注明文章出处和来源网址:http://www.doc100.net/bugs/t/9181/
本文WWW.DOC100.NET DOC100.NET版权所有。