PL SQL添加列以使用基于另一列的值进行查询

时间:2012-10-19 09:24:48

标签: plsql

我有一个查询,其中包括以下

enter image description here

我需要创建一个新列的东西,如果级别1为空则返回1,如果级别2为空则返回2,如果级别3为空则返回3(最多可以有5个级别)

我不知道从哪里开始,所以任何帮助都会非常感激。

1 个答案:

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