首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > IBM DB2 >

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

2013-04-21 
如何找出第1大、第2大、与第大3日期先找出第2大的日期再找出第3大日期数据如下A列日期列A2001-1-1A2001-1-2A

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

再找出第3大日期

数据如下
A列      日期列
A2001-1-1
A2001-1-2
A2001-1-3
A2001-1-4
A2001-1-5
A2001-1-6
A2001-1-7
A2001-1-8
A2001-1-9
A2001-1-10
A2001-1-11
B2003-1-1
B2003-1-2
B2003-1-3
B2003-1-4
B2003-1-5
B2003-1-6
B2003-1-7
B2003-1-8
B2003-1-9
B2003-1-10
B2003-1-11
C2002-1-1
C2002-1-2
C2002-1-3
C2002-1-4
C2002-1-5
C2002-1-6
C2002-1-7
C2002-1-8
C2002-1-9
C2002-1-10
C2002-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 
SQL DB2 找第二大日期
[解决办法]
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函数的使用 比上面简单点了

热点排行