当前位置: 代码迷 >> Sql Server >> 查询流水账的SQL语句
  详细解决方案

查询流水账的SQL语句

热度:15   发布时间:2016-04-24 10:35:48.0
求一个查询流水账的SQL语句
有下面数据表:

期初数据表
年度    客户    期初
2013    A       1000

期间流入业务数据表
日期          客户   流入
2013-1-2      A      100
2013-1-4      A      200
2013-1-1      B      300

(其中B客户期初没有,是新增加的客户,有业务发生)
期间流出业务数据表
日期          客户   流出
2013-1-2      A      50
2013-1-3      A      100


假设今天是2013-1-5号,如果某个客户作为条件(假设条件是A),要求查询出昨天为止的历史流水帐

日期        客户   期初    流入  流出   本日结存
2013-1-1    A      1000    0      0     1000
2013-1-2    A      1000    100    50    1050
2013-1-3    A      1050    0      100   950
2013-1-4    A      950     200    0     1150

如果条件是B,则流水帐如下
日期        客户   期初    流入  流出   本日结存
2013-1-1    B      0       300      0     300
2013-1-2    B      300      0       0     300
2013-1-3    B      300      0       0     300
2013-1-4    B      300      0       0     300

这样的历史流水帐,能否查询得出来,用什么方法(只要得出正确的结果)比较合适。

(只要求查询有业务发生的的记录,不要求每天都列示(之前做了每天列示的,查询一次要5个多小时))

谢谢


------解决方案--------------------
sql我就不写了,给你个思路吧,能做这业务的sql功底应该有点的
假设是找的是A的数据
起初通过3个表合并数据得到如下数据,并增加自标示列id
id      日期        客户   期初    流入  流出   本日结存
1     2013-1-1    A      1000    0        0         1000
2     2013-1-2    A      null     100     50         null    
3     2013-1-3    A      null       0      100        null    
4     2013-1-4    A      null     200      0          null
再通过对id列的递归算出期初和结存    
  相关解决方案