运行总计时如何获取列表超过设定限制?

时间:2013-09-17 15:35:21

标签: mysql sql report running-total

我有一个包含IDUniqNameCategoryEntDateQty的mysql表。

当'类别'中EntDate的总和超出设定限制时,我必须为每个UniqName找到Qty

我是SQL的初学者,对此报告要求感到困惑。

1 个答案:

答案 0 :(得分:1)

计算运行总和可能很复杂。一些数据库提供直接支持。以下是MySQL中使用相关子查询的方法:

select t.*
from (select t.*,
             (select sum(t2.qty)
              from t t2
              where t2.UniqName = t.UniqName and
                    t2.EntDate <= t.EntDate
             ) as cumsum
      from t
     ) t
where cumsum >= YOURLIMIT and cumsum - qty < YOURLIMIT;

如果您有t(UniqName, EntDate, qty)的索引,那么这甚至可以有合理的效果。

此查询假定每个EntDate不重复UniqName,并且qty不为NULL。如果qty可以为零或为负数,则可能会有多行。