首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

结存数据有关问题

2013-09-12 
结存数据问题上月结存本月金额分公司日期100广东深2013-08200杭州2013-08300合肥2013-08040广东深2013-09,

结存数据问题
上月结存     本月金额   分公司    日期
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记录


日期          分公司   数量    产品编号
              广东             A01
(其余记录省略)

4、第一循环中的指定记录中,分别扫描库存表和业务表
日期          分公司   数量    产品编号
              广东             A01
2013-09-01           10    (这是库存记录)
2013-09-02           35    (这是业务记录)

5、建议以日期作为聚集索引,分公司作为非聚集索引。

6、我自己做的库存系统是这样处理,仅供参考。

7、这编辑器排版是有点乱的,也没几行,将就着看吧。

               

  

热点排行