经过复杂的操作(某些数据库合并)后,我有一个需要根据时间戳更新的表。
工作表
Id Time_stamp Resource RunNumber
121 1 A 1
122 2 A 1
123 3 B 1
124 4 B 1
125 5 A 2
关键是根据时间戳为每个资源增量更新 RunNumber 列。所以最终预期的结果是:
Id Time_stamp Resource RunNumber
121 1 A 1
122 2 A 2 //changed
123 3 B 1
124 4 B 2 //changed
125 5 A 3 //changed
我尝试以多种方式做到这一点。由于 DB2 更新不支持 Join 或 With 语句,我尝试了类似的方法:
update JOBSTABLE JT
SET RunNumber =
(SELECT RunNumber
FROM (Select ID, ROW_NUMBER() OVER (ORDER BY TIME_STAMP ) RunNumber from JobsTable, ORDER BY TIME_STAMP) AS AAA
WHERE AAA.ID = JT.ID)
WHERE ID = ?
错误:
不允许将 NULL 值分配给 NOT NULL 列“TBSPACEID=6,TABLEID=16,COLNO=2”。SQLCODE=-407,SQLSTATE=23502,DRIVER=3.64.82 SQL 代码:-407,SQL 状态: 23502
这甚至可能吗?(我的目标是在单个查询中执行此操作,而不是使用游标等。)
谢谢