我遇到类似这个问题的类似问题,但它与所需要的有点不同 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
答案 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