做一個臨時表﹐將其三表插入其中﹐并統計分析即OK

解决方案 »

  1.   

    直接写查询不好吗?为什么用中间表?将入库信息做一个查询,出库统计做一个查询
    然后再从这两个查询中获取结存信息.每个月做一次结账,将库存结余情况登记到库存表,这样,每个月的统计都只需要统计本月的数据.这样做效率不就提高了吗?
      

  2.   

    也不是一个月统计一次,设计的是可以根据自己需要进行结存的。表结构如下
    入库:货主名称,货品名称,进仓件数,进仓日期
    出库:货主名称,货品名称,进仓件数,出仓日期
    应该如何写查询语句谢谢!
    得到结果:
    单位 货品名称 上月结存 本月入库 本月出库 本月结存
      

  3.   

    --根据当前日期进行统计
    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.货品名称
      

  4.   

    从上面的查询可以看到,其实最消耗时间的是:
    1.月份的计算
    2.上月结存的计算所以,如果你的表中增加一个字段,月份.
    然后增加一个表(库存期初余额表),在每个月结转的时候,将库存的结余放在里面,速度将大提高.