现有一表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

解决方案 »

  1.   

    SELECT FIRST,SPECVALUE from tableA where SPECVALUE=
    (SELECT max(SPECVALUE) from tableA where SPECVALUE<=变量)
    这样应该就可以了吧
      

  2.   

    反了,
    SELECT FIRST,SPECVALUE from tableA where SPECVALUE=
    (SELECT min(SPECVALUE) from tableA where SPECVALUE>=变量)
      

  3.   

    select * from 表名
    where rownum =1
    and SPECVALUE >=&SPECVALUE;
      

  4.   

    select * from 表名
    where rownum =1
    and SPECVALUE >=&SPECVALUE order by specvalue;
      

  5.   

    select * 
      from (
            select a.SPECVALUE
              from A a
             where a.SPECVALUE <= 100
               and a.SPECVALUE > &SPECVALUE
             order by a.SPECVALUE
           )
     where rownum = 1;
      

  6.   

    select * from 表名
    where rownum =1
    and SPECVALUE >=&SPECVALUE;这个就好.简单明了.