欢迎来到Doc100.Net免费学习资源知识分享平台!
您的位置:首页 > 程序异常 >

请问一段业务可以用sql写出来么

更新时间: 2014-01-05 02:17:40 责任编辑: Author_N1

 

请教一段业务可以用sql写出来么?
请教一段sql怎么写。有单位要采购一些东西,提供商有很多,但价格不同,而且每个厂商的东西有限。
想按如下规则购买,优先购买价格最便宜的厂商的货物,卖完后看看每个厂商还能剩余多少。这个可以用sql写出来么?
只有这么多分了,要有人能帮忙以后有分再给。

产品表
产品ID 购买量
101 15
102 30
103 10

价格表
产品ID 厂商 价格 库存
101 200 10 10
101 201 11 10
101 202 8 20
102 210 20 11
102 211 21 20
102 214 18 20
103 222 20 10
103 224 10 10

如下表为预期的结果表:
剩余库存
产品1 厂商 价格 库存
101 200 10 10
101 201 11 10
101 202 8 5
102 210 20 1
102 211 21 20
102 214 18 0
103 222 20 10
103 224 10 0

临时表已经创建好了,哪位能帮忙,十分感谢

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    厂商    价格   剩余量
------------------------------------
101 200 10 10
101 201 11 10
101 202 8 5
102 210 20 1
102 211 21 20
102 214 18 0
103 222 20 10
103 224 10 0

*/
上一篇:上一篇
下一篇:下一篇

 

随机推荐程序问答结果

 

 

如对文章有任何疑问请提交到问题反馈,或者您对内容不满意,请您反馈给我们DOC100.NET论坛发贴求解。
DOC100.NET资源网,机器学习分类整理更新日期::2014-01-05 02:17:40
如需转载,请注明文章出处和来源网址:http://www.doc100.net/bugs/t/8105/
本文WWW.DOC100.NET DOC100.NET版权所有。