问一根据范围不同取不同值的查询sql!

fengcau 2004-07-01 03:41:41
oracle表结构:
id 类别 数量数值范围起点 对应数值
-------- -- ---
1 0001 0 50
2 0001 5 100
3 0001 20 86
4 0002 0 77
5 0002 10 65
6 0003 0 45
7 0003 30 434
8 0003 50 44

每一类别对应的数量数值范围起点个数是不定的,其值也是可随便设置的。
现在要根据输入的类别和数量数值得到它的对应数值。
例如我输入类别为0001,数量数值为4,因为4在0-5之间,那么我要得到的值为50。
我输入类别为0003,数量数值为60,因为60>50,那么我要得到的值为44。

如果我输入数量数值和对应类别的数量数值范围起点相等则取
她的上一范围内的对应数值。例如我输入类别为0001,数量数值为5,我要得到的值为50,而不是100。
请问select语句怎么写?
...全文
150 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
atao245993 2004-07-01
  • 打赏
  • 举报
回复
select max(对应数值) from 表
where 类别=&输入类别 and 数量数值范围起点<&输入数量数值;

在PL/SQL DEVELOPER中,&符号在执行SQL的时候提示你输入数值.
qiurun 2004-07-01
  • 打赏
  • 举报
回复
SELECT 目标值 FROM 表 WHERE 类别=类别值 AND 起点=(
SELECT MAX(起点) FROM 表 WHERE 类别=类别值 AND 起点<起点值);
qiurun 2004-07-01
  • 打赏
  • 举报
回复
SELECT 目标值 FROM 表 WHERE 类别=类别值 AND 起点值=(
SELECT MAX(起点值) FROM 表 WHERE 类别=类别值 AND 起点<起点值);



onejune4450 2004-07-01
  • 打赏
  • 举报
回复
未测试

SELECT a.qty
FROM tab_name a
WHERE a.type = :Parm_Type
AND a.point_qty =
(SELECT MAX(b.point_qty)
FROM tab_name b
WHERE b.type = :Parm_Type
AND SIGN (:Parm_Qty - point_qty) > 0 )

qty 对应数值
type 类别
point_qty 数量数值范围起点

Parm_Type 类别参数
Parm_Qty 数量参数

17,082

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧