0
您好所有,
我的工作,我正在做計算的報告:
讓我們第一線爲例。在剩餘的前一列中,我們有15個,在所取的列中我們有0.5,所以在剩下的一列中,我們有14.5。
現在的問題是在剩餘字段中使用結果並將其傳送到剩餘的前一列中的下一行。所以,我們應該有14.5,而不是14。
有沒有人有過類似的工作,並指導我如何在此工作?我真的很想學習如何解決這樣的問題。
您好所有,
我的工作,我正在做計算的報告:
讓我們第一線爲例。在剩餘的前一列中,我們有15個,在所取的列中我們有0.5,所以在剩下的一列中,我們有14.5。
現在的問題是在剩餘字段中使用結果並將其傳送到剩餘的前一列中的下一行。所以,我們應該有14.5,而不是14。
有沒有人有過類似的工作,並指導我如何在此工作?我真的很想學習如何解決這樣的問題。
ANSI標準lag()
函數完全符合您的要求。 SQL表格表示無序集合,所以我需要假設您有一些列 - 我將稱其爲id
- 標識行的排序。
的語法lag()
是:
select t.*, lag(Remaining) over (order by 1) as prevRemaining
from table t;
如果您有不支持ANSI標準窗口功能的數據庫,你可以用一個子查詢同樣的效果。但是,數據庫之間的語法可能略有不同。
您應該首先閱讀關於數據庫規範化的內容。這是一個糟糕的數據庫設計。 – gdoron 2014-10-06 19:29:56
這些是各種表中值的結果。附加的屏幕截圖只是一個帶有我定義的列名的示例報告。 – user2122925 2014-10-06 19:31:38
「有沒有人在類似的工作」是的。 「並指導我如何處理這個問題?」不要在SQL中執行 - 在應用程序層或報告層執行。 SQL不是設計用於執行「運行總計」(或其他任何依賴結果其他行中的數據的操作)。 – 2014-10-06 19:32:22