在postgres中使用like for循环从表中选择记录 如果用户给定的值小于特定列值,则停止循环 否则根据剩余价值选择下一条记录
例如:
NO: value:
inv1 5
inv2 20
inv3 30
用户给定值23表示
否:值:selectedvalue
inv1 5 5
inv2 20 18
答案 0 :(得分:1)
您正在寻找累积金额和一些额外的逻辑:
select t.*,
(case when cume_value < 23 then value
else cume_value - value
end)
from (select t.*,
sum(value) over (order by ??) as cume_value
from t
) t
where cume_value < 23;
??
表示您用于排序表中行的列。 SQL表表示无序集,因此您需要一个排序列。在您的情况下,这可能是value
。
答案 1 :(得分:0)
以temp为(
SELECT值,number1 FROM(SELECT number1,sum(value)OVER
(按编号1排序)
Ť
FROM table as ta
)a 8 +值&gt; t)
从temp
中选择值number1