| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 688 人关注过本帖
标题:计算收发明细表的最后一列余额,好象要用游标,但我不清楚,请各位指教
只看楼主 加入收藏
ltr3507
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2009-3-11
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:2 
计算收发明细表的最后一列余额,好象要用游标,但我不清楚,请各位指教
1月份的科目余额是已知的,也就是90和80是已知的,如何把最后一列的余额算出来1005和1006的10条记录是在一个表里面,感觉是用游标做,但我没有使用过游标,盼各位高手予以指点。 如果这个表里只有一个科目我可以用循环做,但怎么能同时把两个科目的期未余额全算出来呢?
期间   科目     日期           收入      发出        余额   
1       1005    2009-1-1                             90
1       1005    2009-1-10      50                    
1       1005    2009-1-21                 10         
2       1005    2009-2-1       70                    
2       1005    2009-2-20                 20

1       1006    2009-1-1                             80
1       1006    2009-1-12      40                    
1       1006    2009-1-21                 10         
2       1006    2009-2-1       70                    
2       1006    2009-2-20                 20


要的结果

 期间   科目     日期           收入      发出        余额   
1       1005    2009-1-1                             90
1       1005    2009-1-10      50                    140
1       1005    2009-1-21                 10         130
2       1005    2009-2-1       70                    200
2       1005    2009-2-20                 20         180

1       1006    2009-1-1                             80
1       1006    2009-1-12       40                    120
1       1006    2009-1-21                 10         110
2       1006    2009-2-1       70                    180
2       1006    2009-2-20                 20         160
搜索更多相关主题的帖子: LTR3507 
2009-08-10 13:26
happynight
Rank: 8Rank: 8
等 级:贵宾
威 望:15
帖 子:807
专家分:760
注 册:2008-4-26
收藏
得分:20 
CREATE TABLE #ls1(期间 INT,科目 INT,日期 datetime,收入 DECIMAL(9,2),发出 DECIMAL(9,2),余额 DECIMAL(9,2))
 
INSERT INTO #ls1 VALUES(1,1005, '2009-1-1',NULL,NULL,90)
INSERT INTO #ls1 VALUES(1,1005, '2009-1-10',50,NULL,NULL)
INSERT INTO #ls1 VALUES(1,1005, '2009-1-21',NULL,10,NULL)
INSERT INTO #ls1 VALUES(2,1005, '2009-2-1',70,NULL,NULL)
INSERT INTO #ls1 VALUES(2,1005, '2009-2-20',NULL,20,NULL)
 
INSERT INTO #ls1 VALUES(1,1006, '2009-1-1',NULL,NULL,80)
INSERT INTO #ls1 VALUES(1,1006, '2009-1-12',40,NULL,NULL)
INSERT INTO #ls1 VALUES(1,1006, '2009-1-21',NULL,10,NULL)
INSERT INTO #ls1 VALUES(2,1006, '2009-2-1',70,NULL,NULL)
INSERT INTO #ls1 VALUES(2,1006, '2009-2-20',NULL,20,NULL)
 
            
SELECT 期间,科目,日期,收入,发出,
(SELECT ISNULL(SUM(收入),0) - ISNULL(SUM(发出),0) + ISNULL(SUM(余额),0) FROM #ls1 a WHERE a.日期<=#ls1.日期  AND a.科目=#ls1.科目)  
FROM #ls1 ORDER BY 科目,日期
---------------------------------------------
结果
1    1005    2009-01-01 00:00:00.000    NULL    NULL    90.00
1    1005    2009-01-10 00:00:00.000    50.00    NULL    140.00
1    1005    2009-01-21 00:00:00.000    NULL    10.00    130.00
2    1005    2009-02-01 00:00:00.000    70.00    NULL    200.00
2    1005    2009-02-20 00:00:00.000    NULL    20.00    180.00
1    1006    2009-01-01 00:00:00.000    NULL    NULL    80.00
1    1006    2009-01-12 00:00:00.000    40.00    NULL    120.00
1    1006    2009-01-21 00:00:00.000    NULL    10.00    110.00
2    1006    2009-02-01 00:00:00.000    70.00    NULL    180.00
2    1006    2009-02-20 00:00:00.000    NULL    20.00    160.00




2009-08-19 09:52
ltr3507
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2009-3-11
收藏
得分:0 
谢谢楼上的大侠。
其实我用游标也做出来了,只是效率比较低,还是谢谢
2009-08-21 13:38
快速回复:计算收发明细表的最后一列余额,好象要用游标,但我不清楚,请各位指教 ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.048816 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved