Sql server 比较新旧表并在“标志”列中显示差异

Sql server 比较新旧表并在“标志”列中显示差异,sql-server,oracle,Sql Server,Oracle,有两个表NewEmployee和Oldemployee。它们包含相同的列(Empid,Name)。NewEmployee包含来自oldEmployee和其他人的记录。如果NewEmployee包含OldEmployee记录,我需要新列“IsOld”来显示“Y”,否则显示“N”。请帮我查询。试试这样的方法 select N.Empid, N.Name, case when O.Empid is NULL then 'N' else 'Y' END as IsOld fr

有两个表NewEmployee和Oldemployee。它们包含相同的列(Empid,Name)。NewEmployee包含来自oldEmployee和其他人的记录。如果NewEmployee包含OldEmployee记录,我需要新列“IsOld”来显示“Y”,否则显示“N”。请帮我查询。

试试这样的方法

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
Oldemployee
表中没有匹配项时,
LEFT OUTER JOIN
将返回
NULL
,我们可以通过该表设置
IsOld
标志

案例
语句替代方案

  • 对于Oracle:解码IIF
  • 对于Sql Server 2012+:IIF

    • 试试这样的方法

      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
      
      Oldemployee
      表中没有匹配项时,
      LEFT OUTER JOIN
      将返回
      NULL
      ,我们可以通过该表设置
      IsOld
      标志

      案例
      语句替代方案

      • 对于Oracle:解码IIF
      • 对于Sql Server 2012+:IIF