当前位置: 代码迷 >> Oracle管理 >> 求sql,该如何解决
  详细解决方案

求sql,该如何解决

热度:15   发布时间:2016-04-24 06:00:41.0
求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;

这个就好.简单明了.
  相关解决方案