2016-10-06 5 views
0

выбора записей из таблицы, используя как цикл в Postgres где пользователь данное значение меньше определенного значения столбца, то остановить цикл еще выбрать следующую запись на основе остаточной стоимостиВыберите из таблицы

ех:

NO: value: 
inv1 5 
inv2 20 
inv3 30 

пользователем заданное значение 23 означает

No: значение: SelectedValue

inv1 5  5 
inv2 20  18 
+0

Я вижу, что вы выбрали первые записи, но не третий, потому что 30> 23. Но где же остальные 5 и 18 приходят из в ваших результатах? –

ответ

0

с темпом как (

SELECT, значение, number1 FROM (SELECT number1, сумма (стоимость) НАД
(ORDER BY number1) т ИЗ таблицы, как та

) а, где 8 + значения > т)

выберите значение, number1 от температуры

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.

+0

Я использовал этот запрос, если сумма (значение) больше заданного значения означает, что она не может взять эту строку – rengaraj

Смежные вопросы