首先需要一个流水号的列帮助计算,这里假设这个列叫id,假设数据如下:
id je
1 580
2 900
3 390
4 10000
5 100
以下实质是一条语句,为了方便说明,每个子查询都分离出来说明,第三步即为最后的语句
--(1)生成一个按行叠加的列
select *,(select sum(je) from jeb a where a.id <= b.id) as 合计金额
from jeb b
/*结果如下
id je 合计金额
1 580 580
2 900 1480
3 390 1870
4 10000 11870
5 100 11970
*/
--(2)在以上结果中找出合计金额和10000之间的临界点的id(合计金额大于10000的最小id)
select min(id) as 最小id
from (
select *,(select *,(select sum(je) from jeb a where a.id <= b.id) as 合计金额
from jeb b) tb
where 合计金额 > 10000)
/*结果如下
最小id
4
*/
--(3)从原表中找出id比第(2)步找出的最小id要少的所有记录
select *
from jeb
where id <=(
select *,(select *,(select sum(je) from jeb a where a.id <= b.id) as 合计金额
from jeb b) tb
where 合计金额 > 10000 )
-----步骤(3)即为最终结果
温馨提示:答案为网友推荐,仅供参考