SQL如何根據上一行的值來計算這一條的值

2021-10-24 14:25:55 字數 861 閱讀 8514

問題:

排序 量 現有庫存 計算後庫存量(這一列怎麼計算出來?)

1 -5 185 180 由於現有庫存是185,量是-5,所以計算後庫存量為185+(-5)=180

2 -10 185 170 上一行的計算後庫存量為180,當前行的量為-10,這一行的計算後庫存量為170

3 15 185 185 上一行的計算後庫存量為170,當前行的量為15,這一行的計算後庫存量為185

4 160 185 345 以下所有行,都是這個規律一直向下推

5 -15 185 330

6 -5 185 325

7 30 185 355

8 -50 185 305

9 -25 185 280

解決sql:

select

*,計算後=

(select

top1 現有庫存 from tb order

by 排序)+(

select

sum(量)

from tb where 排序 <= t.排序)

from tb t

自己測試:

思路:我們沒有辦法直接獲取到id-1的計算結果,我們可以將前面的過程累加來獲取我們想要的值 「id <= t.id」就是這語句的核心,能理解的話就很清晰了。

附上參考問題解決的鏈結,我發現用一次不久就會忘,還是記下來有空看看記得好,也方便查詢。

建議:這種資料在sql中處理效率比在後台處理慢的多,建議還是在c#程式乙個迴圈就可以解決,新增一列到datable將計算結果賦值進去就好了。

根據上一行填充本行的空白字段,SQL處理方式

我在4年多前,寫了一篇excel處理空白cell的文章,其實在資料庫中也會遇到這種情況。對於普通的oltp系統來說,應該不會出現,主要是在做olap,匯入外部資料來源時,可能匯入系統的就是帶有空白記錄的資料。為了方便說明,我舉了乙個簡單的例子,假設乙個學生成績表,有欄位 學生id 和 成績 學生id...

sed刪除匹配行的上一行和下一行

aa string 變數指定匹配字串 sed i e aa e n n.aa p d file 例子 insert into bonusreturnorder values 47 224 1300573 2 1 wx20160203083601539373 hbtk20160204020000110...

SQL 語句一行拆成多行及多行合併成一行的方法

一 sql 語句對一行 單元格 資料拆分成多行 有時候我們也許對一行資料拆分成多行的操作 例如 col1 col2 1 a,b,c 2 d,e 3 f 拆分成 col1 col2 1 a1 b 1 c 2 d 2 e 3 f 下面給出幾個經常用到的方法 1 sql2000用輔助表 ifobject ...