求一条SQL,谢谢各位大哥!!! 求一条SQL,谢谢各位大哥!!! 求一条SQL,谢谢各位大哥!!!

daqi2009 2008-03-10 09:44:20
表scm_item(明细表)
ID pro_id(商品ID) pro_amount(数量) pro_price(产品名称) pro_money(金额) pro_cost(单价成本) stock_sort(1入库,2出库)
1 1 5 10.00 50.00 10.00 1
1 1 10 5.00 50.00 5.00 1
1 1 6 15.00 2
1 1 10 12.00 120.00 120.00 1
1 1 2 20.00 2
1 2 5 16.00 80.00 16.00 1
1 2 2 20.00 2
根据加权平均计算方法如何得到每个商品的出库的成本价.结果如下:
ID pro_id(商品ID) pro_amount(数量) pro_price(产品名称) pro_money(金额) pro_cost(单价成本) stock_sort(1入库,2出库)
1 1 5 10.00 50.00 10.00 1
1 1 10 5.00 50.00 5.00 1
1 1 6 15.00 40.00 6.67 2
1 1 10 12.00 120.00 120.00 1
1 1 2 20.00 18.95 9.47 2
1 2 5 16.00 80.00 16.00 1
1 2 2 20.00 320.00 16.00 2
...全文
145 点赞 收藏 7
写回复
7 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
flairsky 2008-03-10
如果你修改以前的入库金额和数目,那更应该用分阶段的视图了。

这就像写函数一样,不管你输入时多少,计算过程总是不变的
回复
daqi2009 2008-03-10
谢谢楼上的大哥.
因为有时会修改以前的入库金额和数目.如果一旦调整,后面的成本都要变化.所以只有实现一步实现了.
回复
flairsky 2008-03-10
看上去做分阶段的视图有助解决你这个问题

你要一步实现逻辑会有点乱

回复
daqi2009 2008-03-10
谢谢大哥是这样的.
ID pro_id(商品ID) pro_amount(数量) pro_price(产品名称) pro_money(金额) pro_cost(单价成本) stock_sort(1入库,2出库)
1 1 5 10.00 50.00 10.00 1
1 1 10 5.00 50.00 5.00 1
1 1 6 15.00 40.00 6.667 2
出库的成本为:库存总金额/库存的总数量 (50.00+50.00)/(5+10)=6.667 出库金额为:6.667*6=40.00
当第二次出库时:(50.00+50.00-40.00)/(5+10-6)=3.157
当下一次出库时.也是这样的计算方法
回复
dawugui 2008-03-10
怎么算噢?
回复
pt1314917 2008-03-10
怎么算噢?
回复
chuifengde 2008-03-10
CREATE TABLE a(ID INT,pro_id INT, pro_amount INT,pro_price money,pro_money money, pro_cost money,stock_sort INT)
INSERT a SELECT 1,1, 5, 10.00,50.00,10.00, 1
UNION ALL SELECT 1,1, 10,5.00, 50.00,5.00, 1
UNION ALL SELECT 1,1, 6, 15.00,NULL, NULL, 2
UNION ALL SELECT 1,1, 10,12.00,120.00,120.00,1
UNION ALL SELECT 1,1, 2, 20.00,NULL, NULL, 2 L
UNION ALL SELECT 1,2, 5, 16.00,80.00, 16.00, 1
UNION ALL SELECT 1,2, 2, 20.00,NULL, NULL, 2


DECLARE @a TABLE(xID INT IDENTITY(1,1),ID INT,pro_id INT, pro_amount INT,pro_price money,pro_money money, pro_cost money,stock_sort INT)
INSERT @a SELECT * FROM a

DECLARE @i INT
SET @i=0

WHILE @@ROWCOUNT>0
BEGIN
SET @i=@i+1
UPDATE a SET pro_cost=(SELECT sum(CASE WHEN stock_sort=1 THEN pro_money ELSE -pro_money END)*1.0/sum(CASE WHEN stock_sort=1 THEN pro_amount ELSE -pro_amount END ) FROM @a WHERE pro_id=a.pro_id AND xid<a.xid ) FROM @a a WHERE xid=@i AND pro_cost IS NULL
UPDATE @a SET pro_money=CASE WHEN pro_money IS NULL THEN pro_cost*pro_amount ELSE pro_money END WHERE xid=@i
END

SELECT * FROM @a
--result
/*
xID ID pro_id pro_amount pro_price pro_money pro_cost stock_sort
----------- ----------- ----------- ----------- --------------------- --------------------- --------------------- -----------
1 1 1 5 10.0000 50.0000 10.0000 1
2 1 1 10 5.0000 50.0000 5.0000 1
3 1 1 6 15.0000 40.0002 6.6667 2
4 1 1 10 12.0000 120.0000 120.0000 1
5 1 1 2 20.0000 18.9474 9.4737 2
6 1 2 5 16.0000 80.0000 16.0000 1
7 1 2 2 20.0000 32.0000 16.0000 2

(所影响的行数为 7 行)
*/
回复
相关推荐
基于java的企业人事管理系统设计--软件工程课程设计(含源码与论文设计).rar 1 引言 4 1.1 课程设计目标 4 1.2 编程工具(编程环境)介绍 4 1.3 实施时间及主要实施步骤 4 2 需分析 5 3 系统总体设计 6 4 数据库设计 6 5 主要功能模块的设计与实现 10 5.1 功能模块1详细设计(综合查询员工信息)..........................................................10 5.1.1 详细设计.......................................................................................................10 5.1.2 算法流程........................................................................................................15 5.1.3 界面设计及测试结果.....................................................................................15 6 调试分析 15 7 用户手册 16 8 测试结果 17 8.1 员工信息的添加...................................................................................................17 8.2 员工信息的修改...................................................................................................17 8.3 员工信息的删除...................................................................................................18 8.4 员工信息的综合查询...........................................................................................18 8.5 员工信息按性别统计的结果................................................................................19 8.6 员工信息按状态统计的结果...............................................................................19 8.7 员工信息按职称统计的结果................................................................................20 9 结论 20 10 参考文献 20
发帖
MS-SQL Server
创建于2007-09-28

3.3w+

社区成员

MS-SQL Server相关内容讨论专区
申请成为版主
帖子事件
创建了帖子
2008-03-10 09:44
社区公告
暂无公告