读书人

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

发布时间: 2013-04-21 21:18:07 作者: rapoo

如何找出第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函数的使用 比上面简单点了

读书人网 >IBM DB2

热点推荐