达到总和后停止 SQL 选择

Log*_*ice 2 sql sum db2-400 ibm-midrange

我的数据库是 IBM i 的 Db2。

我具有只读访问权限,因此我的查询必须仅使用基本 SQL 选择命令。

=================================================== ===========

目标:

我想选择表中的每条记录,直到金额列的总和超过预定限制。

例子:

我想匹配表中的每个项目,直到“价格”列中匹配值的总和 >= $9.00。

在此输入图像描述

期望的结果:

在此输入图像描述

这可能吗?

ast*_*ntx 5

您可以使用sum分析函数来计算价格的运行总计,然后按其值进行过滤:

with a as (
  select
    t.*,
    sum(price) over(order by salesid asc) as price_rsum
  from t
)
select *
from a
where price_rsum <= 9
Run Code Online (Sandbox Code Playgroud)
销售人员 | 价格 | PRICE_RSUM
------: | ----:| ---------:
   1001 | 1001 5 | 5
   1002 | 1002 3 | 8
   1003 | 1003 1 | 9

db<>在这里摆弄