有一个库存表为T_ProductionPro ,要求按月分类统计其库存数量,下面是一段按月分类统计的SQL语句SELECT month(fsProdate) as 月份,fsProName as 货物名,fssize as 规格,fsunit as 单位,sum(fsweight) as 库存数量
FROM T_ProductionPro    
WHERE year(fsProdate)='2005' 
GROUP BY month(fsProdate),fsproname,fssize,fsunit但这库存数量的统计出来的结果是该月1号到该月末的结果
如从1月1日到1月末买了10本笔记本,2月1日到2月末买了20本笔记本,3月1日到3月末买了30本笔记本
即:月份     货物名      规格     单位    库存数量
1         笔记本     硬皮      本       10
2         笔记本     硬皮      本       20
3         笔记本     硬皮      本       30
所要求的显示是该1号到月末的库存+以前累加月库存即:月份     货物名      规格     单位    库存数量
1         笔记本     硬皮      本       10
2         笔记本     硬皮      本       30
3         笔记本     硬皮      本       60请问这样的SQL语句怎么写呀

解决方案 »

  1.   

    我的表结构:
    CREATE TABLE [T_ProductionPro] (
    [fsProDate] [datetime] NULL ,
    [fsWorkDate] [datetime] NULL ,
    [fsAvailDate] [datetime] NULL ,
    [fsNo] [varchar] (10) COLLATE Chinese_PRC_CI_AS NULL ,
    [fsBatchNo] [varchar] (10) COLLATE Chinese_PRC_CI_AS NULL ,
    [fsBarcodeNo] [varchar] (30) COLLATE Chinese_PRC_CI_AS NULL ,
    [fsProNo] [varchar] (8) COLLATE Chinese_PRC_CI_AS NULL ,
    [fsProName] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
    [fsSize] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
    [fsUnit] [varchar] (8) COLLATE Chinese_PRC_CI_AS NULL ,
    [fsWeight] [bigint] NULL ,
    [fsWHMen] [varchar] (16) COLLATE Chinese_PRC_CI_AS NULL ,
    [fswarehouse] [varchar] (20) COLLATE Chinese_PRC_CI_AS NULL 
    ) ON [PRIMARY]
    GO
    我的表数据为:
            fsProdate   fsproName   fssize  fsunit  fsweight
    2005-1-1 笔记本 硬皮 本 5
    2005-1-2 笔记本 硬皮 本 5
    2005-2-1 笔记本 硬皮 本 10
    2005-2-2 笔记本 硬皮 本 10
    2005-3-1 笔记本 硬皮 本 30
      

  2.   

    用一条语句恐怕不行,需要三条语句,头两条要将结果保存到临时表中
    SELECT month(fsProdate) as 月份,fsProName as 货物名,fssize as 规格,fsunit as 单位,sum(fsweight) as 库存数量
    into t1
    FROM T_ProductionPro    
    WHERE year(fsProdate)='2005' 
    GROUP BY month(fsProdate),fsproname,fssize,fsunitselect a.*, b.库存数量 as ss
    into t2
    from t1 a left join t1 b
    on a.月份 >= b.月份然后再执行一次group by操作即可