我有一个查询,其中包括以下
我需要创建一个新列的东西,如果级别1为空则返回1,如果级别2为空则返回2,如果级别3为空则返回3(最多可以有5个级别)
我不知道从哪里开始,所以任何帮助都会非常感激。
答案 0 :(得分:0)
您应该使用Case何时决定新列值。
请参阅以下示例pl / sql代码,它将实现您的目标。
create table test_level( level1 varchar2(20),
level2 varchar2(20),
level3 varchar2(20),
level4 varchar2(20),
level5 varchar2(20));
insert into test_level values(null, 'X', 'X', 'X', 'X');
insert into test_level values('X', null, 'X', 'X', 'X');
insert into test_level values('X', 'X', null, 'X', 'X');
insert into test_level values( 'X', 'X', 'X', null,'X');
insert into test_level values('X', 'X', 'X', 'X', null);
select * from test_level;
现在使用以下查询来实现新的列值。
select level1, level2, level3, level4, level5,
(case
when level1 is null then 1
when level2 is null then 2
when level3 is null then 3
when level4 is null then 4
when level5 is null then 5
end) new_lvel
from test_level;