2014-10-06 5 views
0

Sample reportCummulative сумма в отчете

Здравствуйте все,

Я работаю над докладом, где я делаю расчеты:

Давайте возьмем первую строку в качестве примера. В оставшемся предыдущем столбце мы имеем 15, а в приведенном столбце - 0,5, поэтому в оставшейся колонке 14,5.

Теперь проблема заключается в том, чтобы использовать результат в оставшемся поле и перенести его на следующую строку в оставшемся предыдущем столбце. Поэтому вместо 14 мы должны иметь 14.5.

Кто-нибудь работал над чем-то похожим и вел меня о том, как работать над этим? Я действительно хочу узнать, как решить такую ​​проблему.

+0

Сначала вы должны прочитать о нормализации базы данных. Это плохой дизайн базы данных. – gdoron

+0

Это результат значений в различных таблицах. Приложенный скриншот - это только образец отчета с именами столбцов, которые я определил. – user2122925

+1

«Кто-нибудь работал над чем-то похожим» Да. «И подскажите мне, как работать над этим?» Не делайте этого в SQL - сделайте это в своем уровне приложения или уровне отчетности. SQL не предназначен для выполнения «текущих итогов» (или любых других операций, которые зависят от данных в других строках результата). –

ответ

1

ANSI стандарт lag() функция делает именно то, что вы хотите. Таблицы SQL представляют собой неупорядоченные множества, поэтому мне нужно предположить, что у вас есть столбец, который я назову id, который идентифицирует порядок строк.

Синтаксис lag() является:

select t.*, lag(Remaining) over (order by 1) as prevRemaining 
from table t; 

Если у вас есть база данных, которая не поддерживает функцию стандарта ANSI окна, вы можете получить тот же эффект с подзапросом. Однако синтаксис для этого может незначительно отличаться среди баз данных.

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