--根据当前日期进行统计 select 单位=isnull(a.货主名称,b.货主名称) ,货品名称=isnull(a.货品名称,b.货品名称) ,上月结存=isnull(a.上月结存,0)-isnull(b.上月结存,0) ,本月入库=isnull(a.本月入库,0) ,本月出库=isnull(a.本月出库,0) ,本月结存=isnull(a.上月结存,0)-isnull(b.上月结存,0)+(isnull(a.本月入库,0)-isnull(a.本月出库,0)) from( select 货主名称,货品名称, ,上月结存=(select sum(进仓件数) from 入库 where 货主名称=a.货主名称 and 货品名称=a.货品名称 and month(进仓日期)<month(getdate())) ,本月入库=sum(进仓件数) from 入库 a where month(进仓日期)=month(getdate()) ) a full join ( select 货主名称,货品名称, ,上月结存=(select sum(出仓件数) from 出库 where 货主名称=a.货主名称 and 货品名称=a.货品名称 and month(出仓日期)<month(getdate())) ,本月出库=sum(出仓件数) from 出库 a where month(出仓日期)=month(getdate()) ) b on a.货主名称=b.货主名称 and a.货品名称=b.货品名称
然后再从这两个查询中获取结存信息.每个月做一次结账,将库存结余情况登记到库存表,这样,每个月的统计都只需要统计本月的数据.这样做效率不就提高了吗?
入库:货主名称,货品名称,进仓件数,进仓日期
出库:货主名称,货品名称,进仓件数,出仓日期
应该如何写查询语句谢谢!
得到结果:
单位 货品名称 上月结存 本月入库 本月出库 本月结存
select 单位=isnull(a.货主名称,b.货主名称)
,货品名称=isnull(a.货品名称,b.货品名称)
,上月结存=isnull(a.上月结存,0)-isnull(b.上月结存,0)
,本月入库=isnull(a.本月入库,0)
,本月出库=isnull(a.本月出库,0)
,本月结存=isnull(a.上月结存,0)-isnull(b.上月结存,0)+(isnull(a.本月入库,0)-isnull(a.本月出库,0))
from(
select 货主名称,货品名称,
,上月结存=(select sum(进仓件数) from 入库 where 货主名称=a.货主名称 and 货品名称=a.货品名称 and month(进仓日期)<month(getdate()))
,本月入库=sum(进仓件数)
from 入库 a where month(进仓日期)=month(getdate())
) a full join (
select 货主名称,货品名称,
,上月结存=(select sum(出仓件数) from 出库 where 货主名称=a.货主名称 and 货品名称=a.货品名称 and month(出仓日期)<month(getdate()))
,本月出库=sum(出仓件数)
from 出库 a where month(出仓日期)=month(getdate())
) b on a.货主名称=b.货主名称 and a.货品名称=b.货品名称
1.月份的计算
2.上月结存的计算所以,如果你的表中增加一个字段,月份.
然后增加一个表(库存期初余额表),在每个月结转的时候,将库存的结余放在里面,速度将大提高.