请教一下如何提高效率解决如下问题。
查询到总额明细
编号 数量
A 300
B 400
C 500
分配到如下明细
编号 限额 分配数量
A-1 100 100
A-2 50 50
A-3 800 150
B-1 300 300
B-2 100 100
C-1 300 300
C-2 500 500
总额明细减少时,分配配的明细也会相应减少,意思将刚才的进程还要退回。
[解决办法]
--是个先进先出吧?
如果是:
C 2 500 500
那么你这个结果不对吧?
应该是:
C 2 500 200
create table t1(编号 varchar(10),数量 int)insert into t1 values('A',300)insert into t1 values('B',400)insert into t1 values('C',500)create table t2(编号 varchar(10), 序号 int,限额 int,分配数量 int)insert into t2 values('A',1,100,null)insert into t2 values('A',2,50,null)insert into t2 values('A',3,800,null)insert into t2 values('B',1,300,null)insert into t2 values('B',2,100,null)insert into t2 values('C',1,300,null)insert into t2 values('C',2,500,null)goselect t.编号 , t.序号 , t.限额 ,分配数量= (case when (select sum(限额) from t2 where 编号 = t.编号 and 序号 <= t.序号) <= t1.数量 then t.限额 when (select sum(限额) from t2 where 编号 = t.编号 and 序号 <= t.序号) - t1.数量 <= t.限额 then t1.数量 - ((select sum(限额) from t2 where 编号 = t.编号 and 序号 <= t.序号) - t.限额) else 0 end)from t2 t , t1where t.编号 = t1.编号drop table t1 , t2/*编号 序号 限额 分配数量 ---------- ----------- ----------- ----------- A 1 100 100A 2 50 50A 3 800 150B 1 300 300B 2 100 100C 1 300 300C 2 500 200(所影响的行数为 7 行)*/