在表格的每一列的末尾排列NULL

时间:2019-06-25 12:31:00

标签: sql

我有一个包含两列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

1 个答案:

答案 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);