2015-12-21 66 views
1

有两个表NewEmployee,Oldemployee。它们包含相同的列(Empid,Name)。 NewEmployee包含来自oldEmployee以及其他人的记录。如果NewEmployee包含OldEmployee记录或其他'N',我需要新列'IsOld'来显示'​​Y'。请帮助我查询。比较新旧表和显示标志列中的差异

回答

5

尝试这样的事情

select N.Empid, 
     N.Name, 
     case when O.Empid is NULL then 'N' else 'Y' END as IsOld 
from NewEmployee N 
left outer join Oldemployee O 
      on N.Empid = O.Empid 

LEFT OUTER JOIN将返回NULL当存在Oldemployee表中没有匹配,通过它我们可以设置IsOld标志。

Case声明替代

  • 对于Oracle:解码 & IIF
  • 对于SQL Server 2012+:IIF