商品出入库表
item_ID pro_id(产品ID) pro_name(品名) chitty_sort(单据类型) 数量
1 1 电视 入库单 2
2 1 电视 盘点单 5
3 1 电视 入库单 2
4 1 电视 出库单 -1
5 2 空调 入库单 5
6 2 空调 出库单 2
7 2 空调 盘点单 6
计算方式:
如某商品item_ID最大值是盘点单,商品的数量为盘点数量,如空调最后一条记录是盘点单,则数量就为6
否则以盘点单的item_id 为起始行,进行求和计算,如电视盘点单item_id为2,从这一行开始计算数量,就是
5+2+(-1)=6
得到如下结果
pro_id(产品ID) pro_name(品名) 总数量
1 电视 6
2 空调 6
------解决方案--------------------
drop table #a
create table #a(item_ID int,pro_id varchar(20),pro_name varchar(20),chitty_sort varchar(10),qty int)
insert into #a(item_ID,pro_id,pro_name,chitty_sort,qty)
select'1','1','電視' ,'入庫單 ',2 union all
select'2','1','電視' ,'盤點單 ',5 union all
select'3','1','電視' ,'入庫單 ',2 union all
select'4','1','電視' ,'出庫單 ',-1 union all
select'5','2','空調' ,'入庫單',5 union all
select'6','2','空調' ,'出庫單 ',2 union all
select'7','2','空調' ,'盤點單 ',6 union all
select'8','3','其他' ,'盤點單 ',2 union all
select'9','3','其他' ,'入庫單 ',5 union all
select'10','3','其他' ,'入庫單 ',2 union all
select'11','3','其他' ,'出庫單 ',-1
select a.pro_id,pro_name,sum(a.qty) from #a a
where not exists(select 1 from #a x where x.chitty_sort='盤點單' and a.pro_id=x.pro_id and x.item_ID>a.item_ID)
GROUP BY pro_id,pro_name
2 空調 6
1 電視 6
3 其他 8