因为数据库的基础很差 老板又催的比较急 希望大家多多帮忙 多谢了先:目前的情况是由一个order表, 每一个order有一个order_id, 以及1至若干order_vari. order_id和order_vari共同组成主键, 每修改一次order, 产生一个新的order_vari
ok我要做的是收入报告, 我的query中, 选取那些状态为'提交'的order id和vari, 去查找另一个invoice表中与之对应主键的收据信息, 获得收据金额 从而达到目的今天发现的问题是, 因为我只查询状态为提交的order, 也就是合法order, 而实际上, 有些order在vari=1的时候被invoice过, 然后因为修改金额, 第一张order被改为非提交状态, 第二张order有同样的id, 不同的vari号, 状态为提交, 以及修改后的金额, 这样, 我的报告肯定会自动选择第二个也就是修改后的order, 这就造成order生成时间的不符, 举个例子1月 orderid=1 vari=1 被提交, invoice掉, 金额100
2月 orderid=1 vari=2 被提交,同时vari=1的那张状态变为非提交, 再次invoice掉, 金额150因为数据库设计已经完成 每次修改金额均为该笔order的当前余额, 而并非修改金额我的报告需要的效果是 
1月 收入100, 2月 收入50描述的不到位 但愿大家能理解 并且给出一个查询设计思路 谢谢大家了

解决方案 »

  1.   

    可以直接用SQL语句来实现。   建议你列出你的表结构,并提供测试数据以及基于这些测试数据的所对应正确结果。
       参考一下这个贴子的提问方式http://topic.csdn.net/u/20091130/20/8343ee6a-417c-4c2d-9415-fa46604a00cf.html
       
       1. 你的 create table xxx .. 语句
       2. 你的 insert into xxx ... 语句
       3. 结果是什么样,(并给以简单的算法描述)
       4. 你用的数据库名称和版本(经常有人在MS SQL server版问 MySQL)
       
       这样想帮你的人可以直接搭建和你相同的环境,并在给出方案前进行测试,避免文字描述理解上的误差。   
      

  2.   

    当您的问题得到解答后请及时结贴.
    http://topic.csdn.net/u/20090501/15/7548d251-aec2-4975-a9bf-ca09a5551ba5.html
      

  3.   

    基本上猜一下,你可以用类似的SQL语句来实现。自己根据你的表实现情况修改吧。select 月,金额-(select sum(金额) from order表 where order_vari<a.order_vari)
    from order表 a
      

  4.   

    多谢斑竹关照 我在整理一下材料 尽快完善这个问题 因为涉及的业务规则比较多 表其实不复杂 只是不同的情况下该选择的东西都存在一样的字段下 sql语句上难以达到目的