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

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

2个回答

你用的是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 ; 
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐