Plsql PL SQL使用基于另一列的值将列添加到查询

Plsql PL SQL使用基于另一列的值将列添加到查询,plsql,Plsql,我有一个查询,返回的内容包括: 我需要一些东西来创建一个新列,如果级别1为null,它将返回1,如果级别2为null,它将返回2,如果级别3为null,它将返回3(最多可以有5个级别) 我不知道从何处开始,因此非常感谢您的帮助。您应该在决定新列值时使用Case select level1, level2, level3, level4, level5, (case when level1 is null then 1 when le

我有一个查询,返回的内容包括:

我需要一些东西来创建一个新列,如果级别1为null,它将返回1,如果级别2为null,它将返回2,如果级别3为null,它将返回3(最多可以有5个级别)


我不知道从何处开始,因此非常感谢您的帮助。

您应该在决定新列值时使用Case

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;
请参阅下面的示例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;