sqlserver时段统计存储过程代码
根据时段统计商品进货中进货总金额、进货退货总金额、销售总金额、销售退货总金额、期初数量(库存)、结存数量(库存) 选择对应的部门、组别、起始时间、结束时间,运行存储过程即可得到结果的存储过程
如: 进货表 货号 品名 数量 金额 进货日期 部门 001 商品1 10 200 20130801 部门1 002 商品2 25 800 20130814 部门2 003 商品3 40 1000 20130909 部门1
销售表 货号 数量 金额 销售日期 部门 001 5 150 20130811 部门2 002 8 300 20130831 部门1 001 2 60 20130901 部门1 003 15 450 20130909 部门2
统计出20130801至20130909商品进销存数量
create proc uf_stock (@dept varchar(50)='',@sdate varchar(20)='',@edate varchar(20)='') --exec uf_stock '仓库','20130506','20130825' as begindeclare @consql varchar(max) declare @sql varchar(max) set @consql=''if len(@dept)>0 set @consql=@consql+' and [部门] like ''%'+@dept+'''%'if len( @sdate )>0 set @consql=@consql+' and [进货日期]>='''+@sdate+''' and [退货日期]>='''+@sdate +''' and [销售日期]>='''+@sdate+''''if len(@edate)>0 set @consql=@consql+' and [进货日期]<='''+@edate+''' and [退货日期]<='''+@edate +''' and [销售日期]<='''+@edate+''''set @sql='select 货号,sum(a.金额) as 期初金额,sum(b.金额) as 进货金额 ,sum(c.金额) as 退货金额,sum(d.金额) as 销售总金额, sum(e.金额) as 销售退货总金额 from 库存表 a left join (select * from 进货表 where 1=1'+@consql+')b on a. 货号=b.货号 left join (select * from 退货表 where 1=1'+@consql+' )c on a.货号=c.货号 left join (select * from 销售表 where 1=1'+@consql+')d on a.货号=d.货号 left join (select * from 销售退货表 where 1=1'+@consql+')e on a.货号=e.货号 group by 货号'exec (@sql) --print @sql end
|