高级选择查询 - FIFO

时间:2017-03-29 01:09:39

标签: mysql select fifo

我有一个包含列id,项目,数量和到期日期的表。我必须根据到期日期选择具有给定总数量的项目。首先到期的项目需要是要选择的优先级。如果项目有不同的到期日期,查询工作正常,但我的问题是,如果项目具有相同的到期日期,它不返回任何行。请查看以下查询。

SELECT t.ID,
   t.itemcode,
   t.qty,
   t.expdate,
   t.total,
   t.prev_total,
   CASE WHEN t.total > 500 THEN 500 - t.prev_total ELSE t.qty END AS total
FROM
(
SELECT t1.ID,
       t1.itemcode,
       t1.qty,
       t1.expdate,
       (SELECT SUM(t2.qty) FROM put_in t2
        WHERE t2.expdate <= t1.expdate AND t2.itemcode = 'ITEM01') AS total,
       COALESCE((SELECT SUM(t2.qty) FROM put_in t2
        WHERE t2.expdate < t1.expdate AND t2.itemcode = 'ITEM01'), 0) AS prev_total
FROM put_in t1
WHERE t1.itemcode = 'ITEM01'
) t
WHERE t.total - t.qty < 500 AND
  t.itemcode = 'ITEM01'
ORDER BY t.expdate;

0 个答案:

没有答案