在论坛上几次碰到过类似的于FIFO问题,故共享一个有些"恶搞"的算法。在很多情况下,需要对一些记录,比如出入库记录,收付款记录进行先入先出的匹配。一般来说普通做法......
ActualIssureQty4Batch, i.id FROM ( SELECT id, marno, qty, val(dsum('qty','tin','marno="'&marno&'" and id<='&id)) AS accQty, accQty-qty AS paccQty FROM tin ) AS i INNER JOIN ( SELECT id, marno, qty, val(dsum('qty','tout','marno="'&marno&'" and id<='&id)) AS accQty, accQty-qty AS paccQty FROM tout ) AS o ON i.marno=o.marno and i.accQty>o.paccQty and i.paccQty<o.accQty order by o.id,i.id
当然,也可以在查询中加上tin的价格等字段以满足实际的需求。
注意 这个方法,做为趣味在表中记录不多的情况尚可一用,如果是大量记录,则使用代码解决比较高效。
2/2 首页 上一页 1 2 |