2011-05-17 52 views
1

我有一個表account(ID,TransDate,amount,isDebit,balance)。爲了清楚起見,這顯然是我的桌子的一個修剪版本。 TransDate是輸入日期,isDebit是一個布爾值,它告訴這個事務是一個DEBIT還是CREDIT。爲以下輸出生成一個sql查詢

一個新的條目被創建時,它可能會有一個transDate年齡大於最後一個條目,所以我必須將它放在正確的位置並更改將位於該位置之下的所有行的餘額。在那裏我通過transDate ASC,ID ASC對行進行排序,這給了我正確的條目順序。

餘額將通過將當前金額添加到上一個餘額id DEBIT中生成,並在當前條目爲CREDIT時扣除。

它具有如下最後5個條目sorted by transDate ASC , ID ASC

帳戶(ID,TransDate,量,isDebit,平衡)爲例

41 | 2011-04-10 | 1000 | 1 | 1000  // as this is the first entry but not always 

37 | 2011-05-14 | 7500 | 1 | 8500 

39 | 2011-05-14 | 6500 | 0 | 2000 

46 | 2011-05-15 | 1000 | 1 | 3000 

誰能生成查詢(S):

要創建一個新的條目,並提供以下詳細信息:<ID auto> | 2011-05-9 | 1000 | 1 | <balance>

查詢應該會發現新的條目位置在行wi th ID 41和行ID 37之前,並且還從Id 41,因爲該行的餘額將用於計算新行的餘額)和below中提取我行,我在其上設置新的經校正的餘額。

或建議實施這種「分類帳會計」的新方法。

回答

0

不幸的是,MySQL有窗功能的支持,但你也許能獲得從涉及存儲過程,這個以前的答案的解決方案爲SQL Server的窗口功能支持該類型的查詢太有限,以及:Calculate a Running Total in SQL Server