回答
並不知道這是你想要什麼:
merge into table1 tg
using
(
select id, -- I assume this is the PK column
lag(newhisal) over (order by grade) + 1 as new_losal
from table1
) nv on (nv.id = tg.id)
when matched then update
set tg.newlosal = nv.new_losal;
在SQL行:
update table1 t1
set t1.Newlosal=case when t1.grade=1 then (t1.Newhisal+1) else (select t2.Newhisal+1 from table1 t2 where t2.grade = (t1.grade-1)) end
WHERE EXISTS (
SELECT 1
FROM table1 t2
WHERE t2.grade=(t1.grade-1))
這很好,但它對於第一行返回null。 –
@ Richard.McConory因爲你沒有告訴我們如何處理第一行我的男人,我剛剛編輯添加一個案例,當在第一行的更新中,我將它設置爲自己的Newhisal + 1 –
我更新第一行,在此查詢之前,它工作:) 謝謝。 –
這可以有效地使用merge
語句和窗函數來完成在表中(或結果)或未訂購,所以「上一行」的概念只有使得森如果你定義了排序順序。這就是over (order by grade)
在窗口函數中所做的。從屏幕截圖中我無法判斷這個列應該排序。
屏幕截圖也不會顯示錶格的主鍵列。我認爲它被命名爲ID
。你必須改變它以反映你真正的PK欄名稱。
我也沒有在窗口函數中包含partition by
子句,假設公式應該以相同的方式應用於所有行。如果情況並非如此,則需要更詳細地說明您的樣本數據。
- 1. 如何爲行增加值?
- 2. 滑塊值增加拾取以前的值
- 3. 我如何增加價值,所有以前的值在陣列
- 4. 爲NSTimer增加值的可行性
- 5. 奇怪的行爲增加值指針
- 6. List.Add()重新添加以前的值
- 7. 增加codeigniter中的行值
- 8. 奇怪的熊貓行爲更新NaN與以前行的值
- 9. 更新多行,值增加。(不自動)。
- 10. 使用R中前一行的值遞增地更新行
- 11. 新值覆蓋以前的值
- 12. 比較新值與以前的值
- 13. JQuery的不前導零增加值
- 14. 如何增加從以前的響應獲得的int值
- 15. 以前的行值之和
- 16. 相比以前的行值
- 17. 增加值再乘以
- 18. 增加值以JSON對象
- 19. 如何設置每個值的日期從以前的值增加
- 20. MySQL更新多行以增加值不工作
- 21. SQL更新表 - 從以前的行值與值
- 22. 如何更新非空列值以自動增加列值(mysql)?
- 23. 的fancybox手動呼叫以前增加值
- 24. libevent的增加值
- 25. 增加Postgres的值
- 26. 增加值的UIDatePicker
- 27. 增加值的ListView
- 28. 增加值的ListView
- 29. 增加值的Colimn
- 30. 獲得以前的值+新值作爲列?
什麼時候需要增加,插入?或者你想一次更新整個表格? – Hawk
我需要更新表格, –
UPDATE SALGRADE SET NEWHISAL = hisal + hisal * GRADE * 10/100; 這是我如何增加NEWHISAL。 –