我有一个包含ID
,UniqName
,Category
,EntDate
,Qty
的mysql表。
当'类别'中EntDate
的总和超出设定限制时,我必须为每个UniqName
找到Qty
。
我是SQL的初学者,对此报告要求感到困惑。
答案 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
可以为零或为负数,则可能会有多行。