我有一张表,例如
A B C D
32 6100812 778899 123
32 6100812 778593 123
32 6100812 458962 123
33 8000812 885522 P111118
33 8000812 885537 P111118
32 6100915 990011 AA456
32 6100915 789684 AA456
32 6100915 485217 AA456
需要使用我可以创建的连续数字对C列执行更新 使用DB2函数创建Sequence。问题是我需要保留这个数字 来自增量而A列和B列不会改变它们的值。
到目前为止,我有:
create sequence renumber
start with 1
increment by 1
no maxvalue
no cycle;
Update MYLIB.MYTABLE
Set
C = 'SP' || lpad((nextval for renumber),5,'0') ;
drop sequence renumber;
所以,我得到:
A B C D
32 6100812 778899 SP00001
32 6100812 778593 SP00002
32 6100812 458962 SP00003
33 8000812 885522 SP00004
33 8000812 885537 SP00005
32 6100915 990011 SP00006
32 6100915 789684 SP00007
32 6100915 485217 SP00008
虽然我真正需要的是:
A B C D
32 6100812 778899 SP00001
32 6100812 778593 SP00001
32 6100812 458962 SP00001
33 8000812 885522 SP00002
33 8000812 885537 SP00002
32 6100915 990011 SP00003
32 6100915 789684 SP00003
32 6100915 485217 SP00003
这可以在一次更新中完成吗? 我在SQLRPGLE程序中使用它作为嵌入式SQL。
提前感谢您的帮助
答案 0 :(得分:2)
合并到MYLIB.MYTABLE ot
使用(选择A,B,' SP' || LPAD((ROW_NUMBER()OVER()),5,' 0')
ROWNUM
来自MYLIB.MYTABLE小组a,b
按a,b排序
)作为nt(a,b,rownum)
在ot.a = nt.a和ot.b = nt.b
匹配时,然后
更新集d = nt.rownum
否则忽略