回答
并不知道这是你想要什么:
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。 –