日期:2014-05-20 浏览次数:20927 次
id 商品名称 库存数量 进货日期 1 A 100 2001年9月7日 4 A 57 2008年12月5日
Select *
From (
Select @sumamount:=@sumamount+amount sumamount, @tmpid:=@tmpid+1 tmpid, name, amount, indate
From (
SELECT @sumamount:=0, @tmpid:=0, name, amount, indate
From product
Where name='A'
Order By indate
) tmp1
) a, -- 这个子句是查出所有的,然后靠b子句来过滤掉超出部分
(
Select tmpid
From (
Select @sumamount:=@sumamount+amount sumamount, @tmpid:=@tmpid+1 tmpid, name, amount, indate
From (
SELECT @sumamount:=0, @tmpid:=0, name, amount, indate
From product
Where name='A'
Order By indate
) tmp2
) main
Where sumamount>=40
Limit 1
) b --这个子句主要是为了得到刚好能满足汇总amount的rownum值
Where a.tmpid <= b.tmpid
------解决方案--------------------
查找所有为A的ID存放到数组arr里 然后对数组arr里所有的ID进行select查找记录显示到表里
------解决方案--------------------
这样直接写个存储过程解决比较好
------解决方案--------------------
找到了
select id, 商品名称, 进货日期, 库存数量, sum(库存数量) over (order by 进货日期 ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) as 累计数量和 from 表
------解决方案--------------------