怎么统计年度期初余额、年入库额、年出库额、年期末余额

如何统计年度期初余额、年入库额、年出库额、年期末余额?
请教一个问题:
  利用库存商品明细数据(年度月份如201401,库号、库存商品代码、期初余额、本月入库额、本月出库额,期末余额),统计每月库存:select 年度月份,sum(期初余额),sum(本月入库额),sum(本月出库额),sum(期末余额) from 库存盘点 group by 年度月份;
  这是由库存明细盘点产生的统计报表,现在想按年度统计 ,如果用这个方式:
  select left(年度月份,4),sum(期初余额),sum(本月入库额),sum(本月出库额),sum(期末余额) from 库存盘点 group by  left(年度月份,4)
  这样统计数据的期初余额和期末余额是不正确的,如何提取本年度的期初余额(年度1月份的期初余额)和本年度的期末余额(年度12月份的期末额)呢?

------解决思路----------------------
把表结构和部分数据贴出来,还有想得到的预期结果是怎么样的?
------解决思路----------------------

select left(年度月份,4),sum(期初余额),sum(本月入库额),sum(本月出库额),sum(期末余额)
from 库存盘点
where cast(right(年度月份,2) as int) in(1,12)
group by  年度月份

------解决思路----------------------
没有元数据不太好写,


select left(a.年度月份,4) as 年度月份,sum(本月入库额) as 本年入库额,
sum(本月出库额) as 本年出库额,min(b.期初数据) as 本年期初数据,min(c.期末数据) as 本年期末数据
     from 库存盘点 a join (select 年度月份,sum(期初数据) as 期初数据 from 库存盘点 as t
      where right(年度月份,2)='01' group by 年度月份) b on left(a.年度月份,4)=left(b.年度月份,4) 
        join (select 年度月份,sum(期末数据) as 期末数据 
        from 库存盘点 where right(年度月份,2)=
        (select MAX(right(年度月份,2) from 库存盘点 as t1 where LEFT(t1.年度月份,4)=LEFT(t.年度月份,4) )
         group by 年度月份) c 
         on left(a.年度月份,4)=left(c.年度月份,4)
              
             group by left(a.年度月份,4)
              order by left(a.年度月份,4)

前面貌似把别名搞错了。你试试这个
------解决思路----------------------
引用:

select left(a.年度月份,4) as 年度月份,sum(本月入库额) as 本年入库额,sum(本月出库额) as 本年出库额,min(b.期初数据) as 本年期初数据,min(c.期末数据) as 本年期末数据
 from 库存盘点 a join (select 年度月份,sum(期初数据) as 期初数据 from 库存盘点 where right(年度月份,2)='01' group by 年度月份) b on left(a.年度月份,4)=left(b.年度月份,4) 
join (select 年度月份,sum(期末数据) as 期末数据 from 库存盘点 where right(年度月份,2)='12' group by 年度月份) c on left(a.年度月份,4)=left(c.年度月份,4)
 group by left(a.年度月份,4) order by left(a.年度月份,4)

谢谢各位,尤其是 reenjie ,完全理解了我的业务。
现在是只能统计全年的数据,如果未到一年,暂时无法统计了!




引用:

select left(a.年度月份,4) as 年度月份,sum(本月入库额) as 本年入库额,sum(本月出库额) as 本年出库额,min(b.期初数据) as 本年期初数据,min(c.期末数据) as 本年期末数据
 from 库存盘点 a join (select 年度月份,sum(期初数据) as 期初数据 from 库存盘点 where right(年度月份,2)='01' group by 年度月份) b on left(a.年度月份,4)=left(b.年度月份,4) 
join (select 年度月份,sum(期末数据) as 期末数据 from 库存盘点 where right(年度月份,2)='12' group by 年度月份) c on left(a.年度月份,4)=left(c.年度月份,4)
 group by left(a.年度月份,4) order by left(a.年度月份,4)

谢谢各位,尤其是 reenjie ,完全理解了我的业务。
现在是只能统计全年的数据,如果未到一年,暂时无法统计了!

这样啊,取当年最大的月份就OK了

 select left(a.年度月份,4) as 年度,
 (select sum(期初余额) from 库存盘点 where 年度月份=cast(left(a.年度月份,4) as varchar(4))+'01') as 年度1月份的期初余额,
 sum(a.本月入库额) as  年度入库额
 ,sum(a.本月出库额)  年度出库额,
 (select sum(期末余额) from 库存盘点 
where 年度月份=cast(left(a.年度月份,4) as varchar(4))+right('00'+cast(max(right(a.年度月份,2)) as varchar(2)),2)) as 年度12月份的期末额
from 库存盘点 as a group by  left(a.年度月份,4)