日期:2014-05-18  浏览次数:20494 次

两表对账,求思路,求sql!!在线等。。。
公司半路出家,写了个销售管理程序,按理说每一笔发货、每一笔开票、每一笔回款都要对应起来才对,因为是半路出家,以前公司没用过这种系统,系统在编写的时候无法进行这种对应,因为以前的老账,他们自己都搞不明白谁对应谁,所以现在要出报表,特别费劲,有这么两张表 
第一张,开票表
invoice_date 开票日期
moneya 开票金额
branchclient_id 客户id

第二张,回款表
payment_date 回款日期
payment_money 回款金额
branchclient_id 客户id


这两张表都已经 按照order by 客户id,开票日期(回款日期) asc 排序好了。
要求每一笔回款,去找对应单位的开票,然后按这个回款日期往前减开票金额,
比如第一比回款,金额266716.56 客户id是3,然后从开票表里面找客户id是3,开票日期在回款日期2010-11-26之前的开票,
然后回款金额266716.56 去减这些开票,最后如果货款结余,新其一列标注结余多少,等第二次割的时候用,如果货款不够割最后一笔开票的,则最后一笔开票一分钱也不割,把这个结余也写到结余那一列,等第二次割的时候使用,不知道你们听明白了没有,我在线,自己sql比较弱,不会这种递归割帐。

------解决方案--------------------
"金额266716.56 客户id是3,
然后从开票表里面找客户id是3,开票日期在回款日期2010-11-26之前的开票"

你看记录中
"金额108000 客户id是10,
然后从开票表里面找客户id是10,开票日期在回款日期2012-1-3之前的开票"
数据中
客户id是10开票日期全在2012-1-3之前

你的开票和汇款很难对一起

------解决方案--------------------
建议你把测试数据贴出来,不要用图片
------解决方案--------------------
探讨
如果该单位只有开票 没有汇款,则不用割,如果割到最后,有开票没有被割到,不用显示这些开票,只显示被割的开票

------解决方案--------------------
你的意思是用第二张表的每个id下的那个钱去减掉对应的第一张表的日期在第二张表之前的总钱数??是这个意思吗?
------解决方案--------------------
探讨
引用:
"金额266716.56 客户id是3,
然后从开票表里面找客户id是3,开票日期在回款日期2010-11-26之前的开票"

你看记录中
"金额108000 客户id是10,
然后从开票表里面找客户id是10,开票日期在回款日期2012-1-3之前的开票"
数据中
客户id是10开票日期全在2012-1-3之前

你的开票和汇款很难对一起

客户i……