SQL 查询时游标使用
我现在有如下表内容:
月份科目代码客 户本月借方本月贷方
本位币(RMB)本位币(RMB)
1102001工行(RMB) 340.00 350.00
1102002工行(USD) 430.00 400.00
1102003工行(HKD) 200.00 -
2102001工行(RMB) 1,000.00 320.00
2102002工行(USD) 450.00 900.00
2102003工行(HKD) - 780.00
3102001工行(RMB) - 1,220.00
3102002工行(USD) 340.00 340.00
3102003工行(HKD) 432.00 230.00
我现在想查询出来的结果显示为:
月份科目代码客 户上月余额本月借方本月贷方本月余额
本位币(RMB)本位币(RMB)本位币(RMB)本位币(RMB)
1102001工行(RMB) 1,000.00 340.00 350.00 990.00
1102002工行(USD) 1,200.00 430.00 400.00 1,230.00
1102003工行(HKD) 900.00 200.00 - 1,100.00
1合计 3,100.00 970.00 750.00 3,320.00
2102001工行(RMB) 990.00 1,000.00 320.00 1,670.00
2102002工行(USD) 1,230.00 450.00 900.00 780.00
2102003工行(HKD) 1,100.00 - 780.00 320.00
2合计 3,320.00 1,450.00 2,000.00 2,770.00
3102001工行(RMB) 1,670.00 - 1,220.00 450.00
3102002工行(USD) 780.00 340.00 340.00 780.00
3102003工行(HKD) 320.00 432.00 230.00 522.00
3合计 2,770.00 772.00 1,790.00 1,752.00
其中本月余额=上月余额+本月借方-本月贷方
上月余额 = 上一月对应科目本月余额
[解决办法]
首先要知道1月份的上月余额是怎么得来的,这个是计算后续数据的根基。
实现并不难,不需要游标,left join月份错位就可以了:
tb a left join tb b on a.月份=b.月份+1 and a.科目代码=b.科目代码
[解决办法]
游标的效率有的时候很差,能不用尽量少用。