我正在使用Firebird 2.1。SQL查詢/存儲proc來計算每日平均每日總和
我可以使用一些幫助創建以下查詢或存儲過程。
我需要列出每筆小額現金交易總額的月平均值。
讓我解釋:
TABLE PettyCash(行ID,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,如果它是一個傳出的交易
什麼查詢所要做的是計算平衡每一天在這個月中,總結金額,然後除以當月的天數。
如果某一天沒有交易,餘額保持不變。
因此,在今年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不是一個月的最後一天,則最近幾個月的平均值應該是除以最後一天,在這個例子中,6月應該除以23而不是30.
結果應該是這樣的: 月|每月平均每日金額
任何幫助將不勝感激!
謝謝
嘿,感謝您的查詢,但我不認爲這正是我所需要的 - 我可能還沒有明確,但餘額每個月累積。因此,從去年結轉餘額,將新交易添加到該交易,然後在下個月將新交易添加到上個月的最終餘額中,等等...... – Steve
在這種情況下,您需要一個累計和。您可以很容易地在Oracle或SQL Server 2012中執行此操作。您需要自行加入以獲取Firebird中的累積和。最簡單的可能是在應用程序級別完成總和。 –
我決定編寫一個存儲過程。謝謝你的幫助。 – Steve