诚心求算法问题。

gthlu 2007-04-16 12:17:38
我现在有进销存明细表,如下

业务类型 数量 发生后库存余额
入库 5 5
入库 9 14
销售 3 11
入库 4 15

其中“数量”字段,是肯定可以取到的,但“发生后库存余额”字段,请问哪位高手可以给个好方法?在此谢过。
...全文
172 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
CathySun118 2007-04-16
  • 打赏
  • 举报
回复
"发生后库存余额"的数据是怎么计算出来的?
playwarcraft 2007-04-16
  • 打赏
  • 举报
回复
--如果沒有id列,或者不想建臨時表,可以用這:

create table T(type varchar(10),num int, num1 int)
insert into T
select 'in',5,null union all
select 'in',9,null union all
select 'out',3,null union all
select 'in',4,null

declare @num int,@sum int
select @num=0,@sum=0
update T
set num1=@num+@sum,
@sum=@num+@sum,
@num=case when type='in' then num else -num end

select * from T
/*
type num num1
---------- ----------- -----------
in 5 5
in 9 14
out 3 11
in 4 15
*/


drop table T
gahade 2007-04-16
  • 打赏
  • 举报
回复
drop table detail
go
create table detail(业务类型 varchar(10),数量 int)
insert into detail
select '入库',5
union all select '入库',9
union all select '销售',3
union all select '入库',4

alter table detail add id int identity(1,1)

select 业务类型,数量,(select sum(case when 业务类型='入库' then 数量 when 业务类型='销售' then -数量 else 0 end) from detail t where detail.id>=t.id) as '发生后库存余额'
from detail

/*
业务类型 数量 发生后库存余额
---------- ----------- -----------
入库 5 5
入库 9 14
销售 3 11
入库 4 15

(所影响的行数为 4 行)
*/
青锋-SS 2007-04-16
  • 打赏
  • 举报
回复
"发生后库存余额"的数据是怎么计算出来的?
gthlu 2007-04-16
  • 打赏
  • 举报
回复
谢谢各位,思路我明白了。但“playwarcraft(时间就像乳沟,挤挤还是有的) ”兄的算法,可能存在先后进出库存问题。
Andy__Huang 2007-04-16
  • 打赏
  • 举报
回复
一定要有主鍵

--drop table T

create table T(id int identity(1,1),type varchar(10),num int, num1 int)
insert into T
select 'in',5,null union all
select 'in',9,null union all
select 'out',3,null union all
select 'in',4,null

select * from T

select type,num,
last_money=(select sum(case when type='in' then num else -num end) from T where id<=A.id)
from T A

--結果
type num last_money
in 5 5
in 9 14
out 3 11
in 4 15
w75251455 2007-04-16
  • 打赏
  • 举报
回复
----------------------------------------沟
declare @sum int
select @sum=0
update T
set num1=@sum,
@sum=(case when type='in' then num else -num end)+@sum

34,588

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧