Я использую Firebird 2.1.SQL Query/Stored proc для подсчета среднемесячной суммы ежедневных сумм
Я мог бы использовать некоторую помощь при создании следующего запроса или хранимой процедуры.
Мне нужно перечислить среднемесячные суммы ежедневных сумм мелких денежных транзакций.
Поясню:
ТАБЛИЦА PettyCash (RowID, TDate, InOut, сумма)
- 1 2012-01-01 0 5,000
- 2 2012-01-01 1 3.000
- 3 2012-01-05 0 4.000
- 4 2012-01-23 1 2.000
- 5 2012-02-20 1 5,000
InOut = 0, если это входящее, InOut = 1, если это исходящая транзакция
Что запрос должен сделать, чтобы вычислить баланс на каждый день в этом месяце суммируйте суммы, а затем разделите их на количество дней в текущем месяце.
Если в данный день нет транзакции, остаток остается неизменным.
Таким образом, в январе это выглядит следующим образом:
- 2012-01-01 2,000
- 2012-01-02 2,000
- 2012-01-03 2,000
- ...
- 2012-01-05 6.000
и так далее.
Чтобы усложнить этот вопрос, в прошлом году всегда был начальный баланс (что соответствует балансам в этом году).
рассчитать, что, как это:
SELECT SUM(IIF(INOUT = 0, AMOUNT, -AMOUNT))
FROM PETTYCASH
WHERE TDATE < '2012-01-01';
Результирующий запрос или хранимая процедура должна быть предоставлена дата начала и дата окончания - дата начала всегда первый день года, дата окончания может быть конкретным днем года, то есть: StartDate = 2012-01-01, EndDate = 2012-06-23
Если EndDate не является последним днем месяца, то в среднем за последние месяцы должно быть разделенный только на последний день, в примере июнь следует разделить на 23 вместо 30.
Результат должен быть таким: Месяц | Среднее суточных сумм за месяц
Любая помощь была бы принята с благодарностью!
Thanks
Эй, спасибо за запрос, но я не думаю, что это именно то, что мне нужно - я, возможно, не был ясен, но остатки накапливаются в каждом месяце. Таким образом, с прошлого года баланс переносится, к нему добавляются новые транзакции, затем в следующем месяце к окончательному балансу последнего месяца добавляются новые транзакции и т. Д. ... – Steve
В этом случае вам нужна суммарная сумма , Вы можете сделать это в Oracle или SQL Server 2012 довольно легко. Для получения суммарной суммы в Firebird вам необходимо самоподключение. Проще всего было бы сделать сумму на уровне приложения. –
Я решил написать хранимую процедуру. Спасибо за вашу помощь. – Steve