首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

请问一下怎么提高效率解决如下有关问题

2012-04-10 
请教一下如何提高效率解决如下问题。查询到总额明细编号 数量A 300B 400C 500分配到如下明细编号 限额 分配

请教一下如何提高效率解决如下问题。
查询到总额明细

编号 数量
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

SQL code
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 行)*/ 

热点排行