表结构:
       上限值     代理费率
         0           0.009
         50          0.008
         100         0.007
         200         0.005
比如我有这样一个表,我输入一个值为150,150是大于100,并且小于200,它所对应的代理费率为0。007;
比如我输入80,查出的代理费率应该为0.008,这问这个SQL语句该怎么写?
感谢各位帮忙!!!!

解决方案 »

  1.   

    select top 1 代理费率
    from tb 
    where 上限值<=@参数
    order by 上限值 desc--不过,按你的表述,字段应该叫下限值才对。呵呵。
      

  2.   

    SELECT TOP 1 [代理费率] FROM #tb WHERE [上限值]<80 ORDER BY [上限值] DESC 
      

  3.   

    如果刚好相等就取对应的代理费率
    那么的在加个等号SELECT TOP 1 [代理费率] FROM #tb WHERE [上限值]<=100 ORDER BY [上限值] DESC 
      

  4.   

    我想知道等于的时候是取上面还是下面的值 DECLARE @a INT =80
      ;WITH   test ( 上限值, 代理费率 )
               AS ( SELECT   0 ,
                             0.009
                    UNION ALL
                    SELECT   50 ,
                             0.008
                    UNION ALL
                    SELECT   100 ,
                             0.007
                    UNION ALL
                    SELECT   200 ,
                             0.005
                  )
         SELECT  TOP 1 *
         FROM    test
         WHERE  上限值<=@a
         ORDER BY 上限值 DESC 
         /*
         上限值         代理费率
     ----------- ---------------------------------------
     50          0.008
     
     (1 行受影响)
     
     
         */
      

  5.   

    declare @IN int
    set @IN=80
    select top 1 代理费率 from tb  where 上限值<=@IN order by 上限值 desc