oralce查询某个字段合计到某个值时的所有行

比如我有一张text表,其中有个字段为qty,有个字段为time。现在按照time时间降序排序
现在需要统计:到qty这个字段合计到>=100时,所有的行。

用over累积下
http://blog.csdn.net/zengwenjie123/article/details/52896491

你用的是oracle,可以考虑创建一个function做辅助,然后通过一个sql文实现。

CREATE OR REPLACE FUNCTION FUNC_GETLASTLINE
  RETURN NUMBER
IS
  iTotal  NUMBER:=0; -- 合計
  CURSOR CUR_RST
  IS
    SELECT rownum AS line,
      qty
    FROM
      ( SELECT qty,TIME FROM text ORDER BY TIME DESC);
BEGIN
  FOR RST IN CUR_RST
  LOOP
    itotal    := itotal + RST.qty;
    IF itotal >= 100 THEN
    return rst.line;
    END IF;

  END LOOP;

  RETURN 9999999999999999; -- 不满足条件时,根据业务设个大的数字。或者,返回text表的count+1

END;
SELECT qty, time
FROM
  (SELECT rownum AS line,
    qty,
    time
  FROM
    ( SELECT qty,time FROM text ORDER BY time DESC
    )
  )
WHERE FUNC_GETLASTLINE() <= line ;