0

我有一个查询返回的,除其他外,以下

在此处输入图像描述

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

我不知道从哪里开始,所以任何帮助将不胜感激。

4

1 回答 1

0

您应该使用 Case when 来决定新的列值。

请参阅以下示例 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;
于 2012-10-19T14:54:11.603 回答