Итоговый итог просмотра сетки Yii2 для каждой строки SqlDataProvider - PullRequest
0 голосов
/ 15 апреля 2019

У меня есть 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

1 Ответ

0 голосов
/ 28 июня 2019

Я нашел простое решение 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

...