求一段Orale PL/SQL程序,可实现:
在下述表里找出参与相加后和为已知值的纪录,
并把该纪录的Status设为1例:已知值是25、表如下、最初Status全设为0、PL/SQL程序执行后:
recode sale status
------ ---- ------
001 2 0
002 5 1
003 10 1
004 5 0
005 10 1
在下述表里找出参与相加后和为已知值的纪录,
并把该纪录的Status设为1例:已知值是25、表如下、最初Status全设为0、PL/SQL程序执行后:
recode sale status
------ ---- ------
001 2 0
002 5 1
003 10 1
004 5 0
005 10 1
请各位再看看我的另一个问题,谢谢了。!!!!另一PL/SQL简单的Select问题,关于传入参数查询
http://topic.csdn.net/u/20090114/15/8fc57fc6-34a7-40dc-bcb7-a80f443bb637.html
按照这个运行出来的结果是:
name num state
a 2 0
b 4 0
c 7 1
d 10 0
e 10 0
f 28 0
g 9 0
h 18 1
按照小号优先的原则,正确的结果应当是:
name num state
a 2 1
b 4 1
c 7 0
d 10 1
e 10 0
f 28 0
g 9 1
h 18 0
才对吧,你再看看是咋回事
select t.id, t1.id, t.num + t1.num su
from a1 t, a1 t1
where t1.id > t.id
and t.num + t1.num = 25;--相当于求解Cm2=25select t.id, t1.id, t2.id, t.num + t1.num + t2.num su
from a1 t, a1 t1, a1 t2
where t1.id > t.id
and t2.id > t1.id
and t.num + t1.num + t2.num = 25;--相当于求解Cm3=25一个思路,其中一个满足就exit有必要多写几个
state的3,4,5,6各代表什么意思?
能不能说说主要思路?
就是控制循环,刚开始就想到加3和4,后来控制不了,又添加的5,6
name num state
a 2 0
b 4 0
c 7 0
d 10 0
e 10 0
f 28 0
g 9 0
h 18 0
先排序,用最小的数2开始加,一个个数的加,参与相加的数都把state设成2,超过指定数25了,设成3
第一次没找到,就把状态为2的最大的一个数的state改成4,把状态为3的都给回成0,重新加当state还剩两个2的时候,把比较大的改成5,继续循环,如果没有,把最后一个状态是2的改成6,下次循环的时候不再使用改数字,说明这个数跟所有其他数字加起来都不满足要求.然后重新开始再循环,直到找到指定的值写不清楚,你可以加我qq270332164,我一般晚上8点以后在线.