Текущий итог сетки Yii2 для каждой строки SqlDataProvider

У меня есть gridview с атрибутом amount. Я хотел бы сделать промежуточный итог (или промежуточный итог/сведение) amount для каждой строки. Например.:

   amount  rollup
1.   2       2
2.   3       5
3.   2       7
4.   1       8

Есть ли способ сделать это? Не могли бы вы указать мне правильное направление? Я понятия не имею, как это сделать, и я не нахожу подходящей информации, извините.

Ziki: мой $dataProvider – это SqlDataProvider, поэтому я не могу использовать это решение. Не могли бы вы немного помочь мне, как я могу настроить его на SqlDataProvider?

Я имею в виду такие значения, как $data["amount"]. Кажется, у меня нет ни key, ни index, может быть? Я собираюсь:

Неопределенное смещение: 0 (или 1 или...)

Было бы хорошо, если бы было решение SQL


person user2511599    schedule 15.04.2019    source источник


Ответы (1)


Я нашел простое решение SQL для этого:

sum(amount) over (order by ... rows unbounded preceding)

Самое главное здесь вот что: rows unbounded preceding

Если вам нужна такая сумма (поэтому переместите одну строку ниже):

   amount  rollup
1.   2       
2.   3       2
3.   2       5
4.   1       7

можно сделать с помощью window function:

sum(amount) over (order by ... ROWS BETWEEN UNBOUNDED PRECEDING AND 1 PRECEDING)

Кредиты @Hart CO

person user2511599    schedule 28.06.2019