我有一个查询返回的,除其他外,以下
我需要创建一个新列的东西,如果级别 1 为空,则返回 1,如果级别 2 为空,则返回 2,如果级别 3 为空,则返回 3(最多可能有 5 个级别)
我不知道从哪里开始,所以任何帮助将不胜感激。
我有一个查询返回的,除其他外,以下
我需要创建一个新列的东西,如果级别 1 为空,则返回 1,如果级别 2 为空,则返回 2,如果级别 3 为空,则返回 3(最多可能有 5 个级别)
我不知道从哪里开始,所以任何帮助将不胜感激。
您应该使用 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;