Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Работа с данными

Страница: 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-сайт: mc-black.narod.ru/dzp.htm
 Профиль | | #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-сайт: mc-black.narod.ru/dzp.htm
 Профиль | | #4
Добавлено: 20.10.09 10:17
Тебе недостает начальных остатков - нулевые они или нет никто не знает, следовательно неясно как их читать. Предлагаю в таблицу добавить столбец для "нарастающего итога", отсортировать таблицу и обработать все записи в цикле в ручном режиме. Для верной последовательности вычисления итогов необходим также уникальный индекс таблицы. И вообще такое построение мне не нравится, т.к. если подредактировать платеж задним числом, надо по новой пересчитывать все итоги. Короче надо думать еще.

Ответить

Номер ответа: 5
Автор ответа:
 mc-black



ICQ: 308-534-060 

Вопросов: 20
Ответов: 1860
 Web-сайт: mc-black.narod.ru/dzp.htm
 Профиль | | #5
Добавлено: 20.10.09 10:20
Или создать вторую таблицу "остатки" с уникальным полем "дата" (индекс) и полем "остаток на конец". Так получится избежать потери последовательности остатков в пределах одной даты при отсутствии индекса в таблице с платежами.

Ответить

Номер ответа: 6
Автор ответа:
 Bublik



Вопросов: 2
Ответов: 10
 Профиль | | #6 Добавлено: 20.10.09 12:18
Ага, спасибо, направление мыслей понял, буду пробовать)

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам