首页 > 数据库

先入先出(FIFO)的一种SQL语句查询算法

时间:2009-05-03 10:55:21  作者:ACMAIN_CHM  我要投稿
Linux初探欢迎您的投稿,投放方法请点击这里查看,我们会定期赠送精美小礼品给优秀的投稿作者。海纳百川 取则行远!LinuxGoo欢迎您的到来。
在论坛上几次碰到过类似的于FIFO问题,故共享一个有些"恶搞"的算法。在很多情况下,需要对一些记录,比如出入库记录,收付款记录进行先入先出的匹配。一般来说普通做法......

在论坛上几次碰到过类似的于FIFO问题,故共享一个有些"恶搞"的算法。

在很多情况下,需要对一些记录,比如出入库记录,收付款记录进行先入先出的匹配。一般来说普通做法是在某个物料出库的时候通过程序来对比实现。但这种设计对业务要求比较严格。比如需要事先制定,退货,红冲的处理方式。在一些简单的系统中可以直接采用查询来实现。下面用个例子来说明。

两个表
入表 tin(id,marno,qty) // id,主键,可视为批号 ; marno , 物料编号; qty数量
出表 tout(id,marno,qty)

记录如下
tin
id |marno|qty
1 | A |10
2 | A |5
3 | B |20
4 | C |7
5 | A |15
6 | A |20

tout
id |marno|qty
1 | A |3
2 | A |2
3 | B |10
4 | A |1
5 | A |30

对照算法
出库 |对应入库批号
id |marno|qty |id |数量|剩
1 | A |3 | 1 |10 |7
2 | A |2 | 1 |7 |5
3 | B |10 | 3 |20 |10
4 | A |1 | 1 |5 |4
5 | A |4 | 1 |4 |
5 | A |5 | 2 |5 |
5 | A |15 | 5 |15 |
5 | A |6 | 6 |20 |14

期望结果
出库 |对应入库批号
id |marno|qty |id
1 | A |3 | 1
2 | A |2 | 1
3 | B |10 | 3
4 | A |1 | 1
5 | A |4 | 1
5 | A |5 | 2
5 | A |15 | 5
5 | A |6 | 6

SQL 语句:

SELECT o.id,o.marno,
iif(i.accQty<o.accQty,i.accQty,o.accQty) - iif(i.paccQty>o.paccQty,i.paccQty,o.paccQty) AS

如果您需转载 先入先出(FIFO)的一种SQL语句查询算法,请注明来自LinuxGoo.com,其版权归原作者所有。请广大网友留言时遵纪守法,使用文明用语。如果您在应用中有什么问题,请在下面留言,我们会尽快解答。
来顶一下
近回首页
返回首页
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表
相关文章
栏目热门