SQL 查询时游标使用
我现在有如下表内容:
月份 科目代码 客 户 本月借方 本月贷方
本位币(RMB) 本位币(RMB)
1 102001 工行(RMB) 340.00 350.00
1 102002 工行(USD) 430.00 400.00
1 102003 工行(HKD) 200.00 -
2 102001 工行(RMB) 1,000.00 320.00
2 102002 工行(USD) 450.00 900.00
2 102003 工行(HKD) - 780.00
3 102001 工行(RMB) - 1,220.00
3 102002 工行(USD) 340.00 340.00
3 102003 工行(HKD) 432.00 230.00
我现在想查询出来的结果显示为:
月份 科目代码 客 户 上月余额 本月借方 本月贷方 本月余额
本位币(RMB) 本位币(RMB) 本位币(RMB) 本位币(RMB)
1 102001 工行(RMB) 1,000.00 340.00 350.00 990.00
1 102002 工行(USD) 1,200.00 430.00 400.00 1,230.00
1 102003 工行(HKD) 900.00 200.00 - 1,100.00
1 合计 3,100.00 970.00 750.00 3,320.00
2 102001 工行(RMB) 990.00 1,000.00 320.00 1,670.00
2 102002 工行(USD) 1,230.00 450.00 900.00 780.00
2 102003 工行(HKD) 1,100.00 - 780.00 320.00
2 合计 3,320.00 1,450.00 2,000.00 2,770.00
3 102001 工行(RMB) 1,670.00 - 1,220.00 450.00
3 102002 工行(USD) 780.00 340.00 340.00 780.00
3 102003 工行(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.科目代码
------解决方案--------------------游标的效率有的时候很差,能不用尽量少用。