我有一个包含两列col1,col2的表。 NULL必须放在每一列的末尾。
现在我表中的数据。
--- ---
col1 col2
--- ---
1 null
2 2
3 null
4 4
null 5
create table mytable (
col1 number(3),
col2 number(3)
);
insert into mytable values(1, null);
insert into mytable values(2, 2);
insert into mytable values(3, null);
insert into mytable values(4, 4);
insert into mytable values(null, 5);
我需要以这种格式更新它们。
--- ---
col1 col2
--- ---
1 2
2 4
3 5
4 null
答案 0 :(得分:0)
这个主要是解决了这个问题;您需要将最后一个update
放入递归触发器中,以便它执行适当的次数。
-- remove nulls from col2
delete from mytable where col2 is null;
-- erase col1
update mytable
set col1 = null;
-- add "footer" row
insert into mytable (col1,col2) values ((select count(*)+1 from mytable), null);
-- update col1 for 1 remaining record
update mytable
set col1 = (select count(*) from mytable where col1 is not null)
where col2 = (select min(col2) from mytable where col1 is null);