假設數据庫表(已連接) 採購單號  料號    訂購量   收貨單號   收貨數量 10000     00001   10000    10000        5000  10000    00001   10000    10001        4000  10000    00001   10000    10002        1000   10000    00002   10000    10000         5000  10000    00002   10000    10001        5000 
  10000    00003   1000      10003         1000    數据關系:一個採購單號對應多個料號           一個採購單號對應多個收貨單號           一個收貨單號對應多個料號 要求出結果集如下,新增“未收數量”列,并且針對每隔明細行計算其對應的每個採購單號 中每個料號還有多少未收量,直到全部收完變為0 採購單號  料號    訂購量   收貨單號   收貨數量  未收數量10000     00001   10000     10000      5000        5000
10000     00001   1000      10001      4000         1000
10000     00001   1000      10002     1000             0 10000     00002   10000     10000      5000          5000
10000     00002   10000     10001      5000             010000     00003    1000     100003     1000             0

解决方案 »

  1.   

    这个满复杂的,思路:
     1、先找出每种‘採購單號  料號 ’的 总‘收貨數量’=‘訂購量’的数据,按照‘收貨數量’倒叙排列。
     2、1的数据出来后,增加的列每次的计算工式:‘未收數量’=‘訂購量’-先前的‘收貨數量’之和
        (如:第一条数据的公式:‘未收數量’=‘訂購量’-0
              第二条数据的公式:‘未收數量’=‘訂購量’-第一条‘收貨數量’
              第三条数据的公式:‘未收數量’=‘訂購量’-[第一条‘收貨數量’+第二条‘收貨數量’]
           .....
         )
    -------------------------------
    以上1的数据对应SQL好写些;2的SQL比较麻烦了,而且还有‘未收數量’=0的时候重新计算的问题。
    ===============================
    建议:
         不要写成一个SQL,否则搞死人的嵌套;写存储过程吧/后台处理,只要以上的逻辑清晰就好完成了。