日期:2014-05-18 浏览次数:20489 次
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) go select 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 , t1 where t.编号 = t1.编号 drop table t1 , t2 /* 编号 序号 限额 分配数量 ---------- ----------- ----------- ----------- 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 200 (所影响的行数为 7 行) */