日期:2014-05-17  浏览次数:20495 次

结存数据问题
上月结存     本月金额   分公司    日期
10           0       广东深     2013-08
20           0       杭州       2013-08
30           0       合肥       2013-08
0            40      广东深     2013-09,上月结存应该 是10,下个月(10月)应该变成50
0            40      杭州       2013-09
0            40      合肥       2013-09
8月份的数据 是期初数据,2013-09是9月的统计(select 分公司,sum(金额) from 出库单 group by 分公司)。我想做的是结存表,怎么样把每个月的结存数据 存到上月结存 字段。
请指点,谢谢

------解决方案--------------------

WITH a1 AS
(
SELECT 上月结存,上月结存0=
ISNULL(
(SELECT SUM(上月结存+本月金额) FROM 表 
WHERE 日期=CONVERT(CHAR(7),DATEADD(mm,-1,a.日期+'-01'),120) AND 分公司=a.分公司),0)
FROM 表 a
WHERE 日期='2013-09'
)
UPDATE a1 SET 上月结存=上月结存0

------解决方案--------------------
(多余字段省略,楼主自己看实际需求吧)

一、库存表
日期          分公司   数量    产品编号
2013-09-01  广东     10     A01
(其他记录省略)

二、业务表
日期          分公司   数量    产品编号
2013-09-02  广东     35     A01
(其他记录省略)


三、程序逻辑

1、以2013-09-01作为上次盘点的库存(10个)

2、联合扫描库存表和业务表
——其中库存表中,指定日期为2013-09-01
——其中业务表中,日期>=2013-09-01
——group by 产品编号,分公司
——列表循环显示所有产品
——此处为第一循环

3、假设第一循环出来的A01记录