日期:2014-05-18  浏览次数:20575 次

求一个进销存报表的查询语句。
记录进出库记录的表

tStorageIO]   (
[fProductID]   [int]   NOT   NULL   ,     物料ID
[fDate]   [datetime]   NOT   NULL   ,     日期
[fInQty]   [numeric](10,   2),           入库数量
  [fOutQty]   [numeric](10,   2)   NULL   出库数量
[fInMoney]   [numeric](18,   2),         入库金额
计算说明:
计算按月加权平均单价计算出库金额来查询一个进销存报表
        出库单价=(上月期末余额+本月入库金额)/(上月期末数量+本月入库数量)
        出库金额=出库单价*本月出库数量
        数量和金额的本月余额=上月余额+本月入库-本月出库

怎么查询某一月份的进销存报表.报表结构如下

月份     物料ID     期初数量     期初金额   本月入库数量   本月入库金额     本月出库数量

            本月出库金额   期末数量   期末金额

------解决方案--------------------
给个例自己看看吧:结算的问题

表A
tyear tmonth CDB a0 a3
----------- ----------- ---------- ----------- ----------
2005 7 js 609 1
2005 8 js 0 2
2005 9 js 0 3
2005 10 js 0 0
2005 11 js 0 1
2005 7 sf 1776 18
2005 8 sf 0 17
2005 9 sf 0 71
2005 10 sf 0 99
2005 11 sf 0 103
2005 12 sf 0 125
2006 1 sf 0 57

================================================================
表B
tyear tmonth CDB a0 a3 a4
----------- ----------- ---------- ----------- ----------- -----------
2005 7 js 609 1 608
2005 8 js 0 2 606
2005 9 js 0 3 603
2005 10 js 0 0 603
2005 11 js 0 1 602
2005 7 sf 1776 18 1758
2005 8 sf 0 17 1741
2005 9 sf 0 71 1670
2005 10 sf 0 99 ....
2005 11 sf 0 103 ....
2005 12 sf 0 125 ....
2006 1 sf 0 57 ....
2006 2 sf 0 22 ....
2006 3 sf 0 13 ....

TYEAR为年,TMONTH为月,按CDB求A4,A4=A0-A3一直累计下来.苦思了好久,请高手指点


if object_id( 'pubs..tb ') is not null
drop table tb
go

create table tb
(
tyear char(4),
tmonth char(2),
CDB char(2),
a0 int,
a3 int
)

insert into tb(tyear,tmonth,CDB,a0,a3) values( '2005 ', '07 ', 'js ', 609, 1)
insert into tb(tyear,tmonth,CDB,a0,a3) values( '2005 ', '08 ', 'js ', 0 , 2)
insert into tb(tyear,tmonth,CDB,a0,a3) values( '2005 ', '09 ', 'js ',