欢迎来到Doc100.Net免费学习资源知识分享平台!
您的位置:首页 > 程序异常 >

请问一个关于分段查询的sql语句!

更新时间: 2014-05-19 08:47:04 责任编辑: Author_N8

 

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

--参考方法--
select top 1 代理费率
from tb 
where 上限值<=@参数
order by 上限值 desc

--不过,按你的表述,字段应该叫下限值才对。呵呵。
--参考方法--
SQL code
SELECT TOP 1 [代理费率] FROM #tb WHERE [上限值]<80 ORDER BY [上限值] DESC

--参考方法--
1楼已经给出了正确答案。
不过我还是想唠叨一下,通常情况下,这种表格设计,会把上限值和下限值都写在一行中,上一行的最大值和下一行的最小值一般都是两个不相等的相邻数, 这样判断数据就非常简单了。
--参考方法--
我想知道等于的时候是取上面还是下面的值
SQL code
 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 行受影响)
 
 
     */

--参考方法--
declare @IN int
set @IN=80
select top 1 代理费率 from tb where 上限值<=@IN order by 上限值 desc
上一篇:上一篇
下一篇:下一篇

 

随机推荐程序问答结果

 

 

如对文章有任何疑问请提交到问题反馈,或者您对内容不满意,请您反馈给我们DOC100.NET论坛发贴求解。
DOC100.NET资源网,机器学习分类整理更新日期::2014-05-19 08:47:04
如需转载,请注明文章出处和来源网址:http://www.doc100.net/bugs/t/935865/
本文WWW.DOC100.NET DOC100.NET版权所有。