我在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