Страница: 1 |
Страница: 1 |
Вопрос: Как сделать суммирование с нарастающим итогом ?
Добавлено: 19.10.09 14:58
Автор вопроса: Bublik
Есть база, в ней колонки дата, расход, приход, соответственно, надо сделать что-то вроде оборотно-сальдовой ведомости (расход+приход+нарастающий итог). Возможно ли это реализовать в запросе SQL?
Ответы
Всего ответов: 6
Номер ответа: 1
Автор ответа:
Bublik
Вопросов: 2
Ответов: 10
Профиль | | #1
Добавлено: 19.10.09 16:35
Нашел такой вариант..
SELECT transactionid, transactiondatetime, amount,
 SELECT SUM(amount)
FROM dbo.bankaccount as D1
WHERE D1.transactiondatetime <= D0.transactiondatetime) AS balance
FROM dbo.bankaccount AS D0
Дома попробую
Номер ответа: 2
Автор ответа:
mc-black
ICQ: 308-534-060
Вопросов: 20
Ответов: 1860
Web-сайт:
Профиль | | #2
Добавлено: 19.10.09 20:56
Bublik
Для всего прочего начального сальдо недостает, без начальных остатков оборотки не бывает поскольку. Структуру хранимых данных Вам стоит разработать сначала, в теме ее описать, чтобы хоть представлять, с какими таблицами и полями SQL-выражение работать должно?
*мастей йода*
Номер ответа: 3
Автор ответа:
Bublik
Вопросов: 2
Ответов: 10
Профиль | | #3
Добавлено: 19.10.09 22:37
mc-black
Таблица из четырех столбцов состоит: Дата платежа, Расход, Приход, Назначение платежа.
Соответственно, хочу добавить еще один столбец с нарастающим итогом. По идее ведь запись с наиболее ранней датой и будет переходящим остатком?
Сейчас попробовал пример, о котором писал выше, он не работает при совпадении дат платежей, выдает итог по всем платежам, приходящимся на дату. (((
Номер ответа: 4
Автор ответа:
mc-black
ICQ: 308-534-060
Вопросов: 20
Ответов: 1860
Web-сайт:
Профиль | | #4
Добавлено: 20.10.09 10:17
Тебе недостает начальных остатков - нулевые они или нет никто не знает, следовательно неясно как их читать. Предлагаю в таблицу добавить столбец для "нарастающего итога", отсортировать таблицу и обработать все записи в цикле в ручном режиме. Для верной последовательности вычисления итогов необходим также уникальный индекс таблицы. И вообще такое построение мне не нравится, т.к. если подредактировать платеж задним числом, надо по новой пересчитывать все итоги. Короче надо думать еще.
Номер ответа: 5
Автор ответа:
mc-black
ICQ: 308-534-060
Вопросов: 20
Ответов: 1860
Web-сайт:
Профиль | | #5
Добавлено: 20.10.09 10:20
Или создать вторую таблицу "остатки" с уникальным полем "дата" (индекс) и полем "остаток на конец". Так получится избежать потери последовательности остатков в пределах одной даты при отсутствии индекса в таблице с платежами.
Номер ответа: 6
Автор ответа:
Bublik
Вопросов: 2
Ответов: 10
Профиль | | #6
Добавлено: 20.10.09 12:18
Ага, спасибо, направление мыслей понял, буду пробовать)