表1:
rowid         hd         fprice      fqty
1             0.2          50         178.6
2             0.2          52         136
3             0.2          89         102
表2:
id       分录      厚度       数量         金额  
1        1          0.2       65                    
1        2          0.2       68                    
1        3          0.2       108                   
2        1          0.2       34                    
2        2          0.2       21                    
2        3          0.3       90                    需求是这样的:
表1中有3行,厚度为0.2的有多种价格
那表2中的0.2应该取的价格是(从上到下):
第1行:0.2   65,因为65小于178.6所有这一行的价格应该取50,同时抵减了表1的178.6还剩下178.6-65=113.6
第2行:0.2  68,因为抵减了上一行的65还剩下113.6。所以此行的单击也应该是50,同时抵减了表1中的113.6还剩下113.6-68=45.6
第3行:0.2  108,因为抵减了上一行的68还剩下45.6。小于108.所以此行的有单价为50(数量为45.6)。表1中的第一行已经扣减完毕。所有表1指向下一行0.2  136(表1)
表2中的第3行已经满足了45.6还需62.4即可满足,从表1中的第2行0.2 136 拿出62.4即可满足表1中第3行的数量,同时取下这行的单价为52(62.4)。所有此行的金额是50*45.6+62.4*52
同理................................请问这样的SQL应该怎么写?
在线等啊。可能是前面的贴没有描述清楚

解决方案 »

  1.   

    表1:
    a     b     c
    0.2   150   90
    0.2   40    91
    表2:
    a      b     c
    0.2    140   ?
    0.2    30    ?
    关联依据是a相等
    用表2中的每一行和表1中的每一行比较(比较条件:数量)140小于150,那么表2中的140这行就取90,此行还剩下10
    表2下移
    30大于10(上一行剩下的),那么表2中就会有2个单价。一个是上一行还剩下的10那行单价(90),另外一个是表1中的下一行91