我在oracle 11g上,我被困在这个问题上。根据条件依次更新一列
我的表结构如下
╔═══════╦══════╦════════╗ ║ tm_id ║ flag ║ countr ║ ╠═══════╬══════╬════════╣ ║ 1 ║ 0 ║ null ║ ║ 2 ║ 0 ║ null ║ ║ 3 ║ 1 ║ null ║ ║ 4 ║ 0 ║ null ║ ╚═══════╩══════╩════════╝
我想用一个连续的值,如下
╔═══════╦══════╦════════╗ ║ tm_id ║ flag ║ countr ║ ╠═══════╬══════╬════════╣ ║ 1 ║ 0 ║ 1 ║ ║ 2 ║ 0 ║ 2 ║ ║ 3 ║ 1 ║ 2 ║ ║ 4 ║ 0 ║ 3 ║ ╚═══════╩══════╩════════╝
更新列COUNTR的所有值,所以基本上是COUNTR值只能增加,如果该标志是0.如果它是1那么它不应该增加(或它应该有以前的值)
我试过以下更新语句
UPDATE calendar
SET countr = case when flag = 0 then tm_id else countr-1 end
感谢这工作完美...我尝试了你使用的东西的谷歌搜索,但你能给我一些上下文吗?我很难将它们放在一起,并理解你写的内容。 –
@ user1561770 - 添加了“SUM”分析功能的说明。 – MT0