Sql server 比较新旧表并在“标志”列中显示差异
有两个表NewEmployee和Oldemployee。它们包含相同的列(Empid,Name)。NewEmployee包含来自oldEmployee和其他人的记录。如果NewEmployee包含OldEmployee记录,我需要新列“IsOld”来显示“Y”,否则显示“N”。请帮我查询。试试这样的方法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
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