如果值不是数字

时间:2018-03-28 15:14:23

标签: sql oracle

我遇到类似这个问题的类似问题,但它与所需要的有点不同 https://community.oracle.com/thread/4132183

我有下表: 表1:

          ID   empID     employeeactive    dtefrom    dateto        mgrid 
           1     123            1          1/10/2016                 113
           2     213             0         1/20/2015   1/20/2016     323          
           3     213             1         1/20/2016                 423
           4     312             0         1/05/2016   1/30/2017     523            
           5     512             1         1/30/2017                 623
           6     812             1         2/30/2017                 6543

表2:

         empID           emplyactive       supid
          123               1                -
          213               1                -
          312               1                -
          512               0                -
          612               1                -
          712               1                - 
          812               1                872
          912               0                222

我有这个表而不是 - 我想用表1中的mgrid替换..而table2有额外的数据不在table1中所以我必须忽略额外的数据如果supid' - '并且还想要有emplyactive = 1但是某些emplyactive = 1表1有多个mgr id ...

所以我尝试了这个

      select empid , decode(supid,'-',mgrid,supid) from table2,table1 where 
         empid(+) = empid and emplyactive =1 and employeeactive=1

所以我想知道如何解决这个问题请帮助我谢谢你...如果有的事情和存在将会提前感谢。

这就是我想要在包体oracle中插入的内容。

这是输出的样子:

             empID           emplyactive       supid
          123               1                   113
          213               1                   423
          812               1                   872

1 个答案:

答案 0 :(得分:0)

select a.empid, a.emplyactive, max(a.supid) supid
from (
select * from #table2
union 
select empid, employeeactive, mgrid from #table1)a
left join #table1 b on a.empid=b.empid and  employeeactive=1
join #table2 c on a.empid=c.empid and  c.emplyactive=1
where a.emplyactive=1
and a.supid<>0
group by a.empid, a.emplyactive