ID   值(只有0或1) 正常级别 告警时级别  值为1时名称   值为0时名称
 1       0      4       1         报警      正常
 2       0      1       1         报警      正常
 3       1      4       1         报警        正常
 4       1      4       1         正常       报警
 5       0      4       1         正常       报警
条件:
值里面只有0或1,当值为0时,参照后面的:“值为1时名称”,“值为0时名称”,选择级别
例如:ID=1时,值为0,为正常,正常级别为:4
      ID=3时,值为1,为报警,报警级别为:1
      ID=5时,值为0,为报警,报警级别为:1想要的结果:
ID   值(只有0或1)   级别 
 1       0      4
 2       0      1   
 3       1      1     
 4       1      4
 5       0      1希望大神帮帮忙,提供思路都行

解决方案 »

  1.   


    with tb as
    (
     select 1 ID,0 值,4 正常级别,1 告警时级别,'报警' 值为1时名称,'正常' 值为0时名称 from dual union
     select 2,0,1,1,'报警','正常' from dual union
     select 3,1,4,1,'报警','正常' from dual union
     select 4,1,4,1,'正常','报警' from dual union
     select 5,0,4,1,'正常','报警' from dual )select id,值,
    case (case 值 when 0 then 值为0时名称 else 值为1时名称 end) when '正常' then 正常级别 else 告警时级别 end 级别
    from tb
      

  2.   

    select ID,值(只有0或1),decode(decode(值,0,值为0时名称,1,值为1时名称,null),'正常',正常级别,'报警',告警时级别,null) as 级别  from  table