日期:2014-05-17 浏览次数:20595 次
select 101 产品ID,15 购买量 into [#产品表]
union select 102 产品ID,30 购买量
union select 103 产品ID,10 购买量
select 101 产品ID,200 厂商,10 价格,10 库存 into [#价格表]
union select 101 产品ID,201 厂商,11 价格,10 库存
union select 101 产品ID,202 厂商,8 价格,20 库存
union select 102 产品ID,210 厂商,20 价格,11 库存
union select 102 产品ID,211 厂商,21 价格,20 库存
union select 102 产品ID,214 厂商,18 价格,20 库存
union select 103 产品ID,222 厂商,20 价格,10 库存
union select 103 产品ID,224 厂商,10 价格,10 库存
select 101 产品ID,15 购买量 into [#产品表]
union select 102 产品ID,30 购买量
union select 103 产品ID,10 购买量
select 101 产品ID,200 厂商,10 价格,10 库存 into [#价格表]
union select 101 产品ID,201 厂商,11 价格,10 库存
union select 101 产品ID,202 厂商,8 价格,20 库存
union select 102 产品ID,210 厂商,20 价格,11 库存
union select 102 产品ID,211 厂商,21 价格,20 库存
union select 102 产品ID,214 厂商,18 价格,20 库存
union select 103 产品ID,222 厂商,20 价格,10 库存
union select 103 产品ID,224 厂商,10 价格,10 库存
select 产品ID,厂商,价格,剩余量=case when 剩余量>=0 then 0 when 库存<=-剩余量 then 库存 else -剩余量 end
from
(
select a.* ,剩余量=b.购买量-(select sum(库存) from #价格表 t where a.产品ID=t.产品ID and t.价格<=a.价格)
from #价格表 a
inner join #产品表 b on a.产品ID=b.产品ID
)t
/*
产品ID 厂商 价格 剩余量
------------------------------------