日期:2014-05-17  浏览次数:20729 次

求sql
现有一表A

字段如下:

FIRST   SPECVALUE
100         10
90           15
80           20
70           30
.........
0             95

给出一个变量值,选择在SPECVALUE区间内较大的那条记录。(specvalue无重复,最小为0,最大不大于100)
例如23,选择第4条记录,因为23小于30且大于20
13,选择第2条记录,因为13大于10小于15
如果是9,则选择第1条记录,因为9大于0小于10
如果是98,则选择最后1条记录,因为98大于95小于100


------解决方案--------------------
反了,
SELECT FIRST,SPECVALUE from tableA where SPECVALUE=
(SELECT min(SPECVALUE) from tableA where SPECVALUE> =变量)


------解决方案--------------------
select * from 表名
where rownum =1
and SPECVALUE > =&SPECVALUE;
------解决方案--------------------
select * from 表名
where rownum =1
and SPECVALUE > =&SPECVALUE order by specvalue;

------解决方案--------------------
select *
from (
select a.SPECVALUE
from A a
where a.SPECVALUE <= 100
and a.SPECVALUE > &SPECVALUE
order by a.SPECVALUE
)
where rownum = 1;
------解决方案--------------------
select * from 表名
where rownum =1
and SPECVALUE > =&SPECVALUE;

这个就好.简单明了.