从表中选择

时间:2016-10-06 11:52:41

标签: sql postgresql

在postgres中使用like for循环从表中选择记录 如果用户给定的值小于特定列值,则停止循环 否则根据剩余价值选择下一条记录

例如:

NO:   value:   
inv1 5
inv2 20
inv3 30

用户给定值23表示

否:值:selectedvalue

inv1  5      5
inv2  20     18

2 个答案:

答案 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