存货核算中的加权平均
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO
ALTER proc CaculateProfit_JiaQuanPingJun
as
--加权平均
--创建虚拟表
--1.计算出所有的进货成本
/*
drop table #tbl
drop table #tbl2
*/
declare @期初数量 int,
@期初单价 decimal(12,4)
set @期初数量=20
set @期初单价=200.00
declare @入库总数量 int,
@入库总成本 decimal(12,4),
@入库成本单价 decimal(12,4)
set @入库总数量=0
set @入库总成本=0
set @入库成本单价=0
select @入库总数量=sum(isnull(inputNum,0)),
@入库总成本=sum(isnull(inputNum,0)*isnull(inputPrice,0))
from dbo.InvertoryAccouter
--计算出成本单价
select @入库成本单价 = @入库总成本/@入库总数量
create table #tbl(IODate datetime default(getdate()),
InputNum int,
InputUnitPrice decimal(12,4),
OutputNum int,
CostUnitPrice decimal(12,4),
SalesUnitPrice decimal(12,4),
Profit decimal(12,4))
select IODate,
inputNum,
inputPrice,
outputNum,
SalesPrice,
case when (outputNum is not null
and
SalesPrice is not null)
then @入库成本单价
else
null
end CostUnitPrice
into #tbl2
from dbo.InvertoryAccouter
order by IODate asc
insert into #tbl
(IODate,InputNum,InputUnitPrice,
--InputCost,
OutputNum,SalesUnitPrice,CostUnitPrice)
select '2001-01-31 23:59:59',
@期初数量,
@期初单价,
null,
null,
null
union all
select *
from #tbl2
--select * from #tbl
select SUM(isnull(OutputNum,0)*
(isnull(SalesUnitPrice,0)-isnull(CostUnitPrice,0)))
from #tbl
GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO
GO
SET ANSI_NULLS ON
GO
ALTER proc CaculateProfit_JiaQuanPingJun
as
--加权平均
--创建虚拟表
--1.计算出所有的进货成本
/*
drop table #tbl
drop table #tbl2
*/
declare @期初数量 int,
@期初单价 decimal(12,4)
set @期初数量=20
set @期初单价=200.00
declare @入库总数量 int,
@入库总成本 decimal(12,4),
@入库成本单价 decimal(12,4)
set @入库总数量=0
set @入库总成本=0
set @入库成本单价=0
select @入库总数量=sum(isnull(inputNum,0)),
@入库总成本=sum(isnull(inputNum,0)*isnull(inputPrice,0))
from dbo.InvertoryAccouter
--计算出成本单价
select @入库成本单价 = @入库总成本/@入库总数量
create table #tbl(IODate datetime default(getdate()),
InputNum int,
InputUnitPrice decimal(12,4),
OutputNum int,
CostUnitPrice decimal(12,4),
SalesUnitPrice decimal(12,4),
Profit decimal(12,4))
select IODate,
inputNum,
inputPrice,
outputNum,
SalesPrice,
case when (outputNum is not null
and
SalesPrice is not null)
then @入库成本单价
else
null
end CostUnitPrice
into #tbl2
from dbo.InvertoryAccouter
order by IODate asc
insert into #tbl
(IODate,InputNum,InputUnitPrice,
--InputCost,
OutputNum,SalesUnitPrice,CostUnitPrice)
select '2001-01-31 23:59:59',
@期初数量,
@期初单价,
null,
null,
null
union all
select *
from #tbl2
--select * from #tbl
select SUM(isnull(OutputNum,0)*
(isnull(SalesUnitPrice,0)-isnull(CostUnitPrice,0)))
from #tbl
GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO