sql case语句-返回第一个匹配项(忽略其他匹配项)

vcudknz3  于 2021-07-29  发布在  Java
关注(0)|答案(1)|浏览(294)

我有一个简单的问题——我有两个表(表a和表b),每个表都有工作人员的记录。一名工作人员可能反映在两个表中。我试图组合一个case语句,返回表a中某个雇员的第一个匹配项,然后退出case语句(即,不要试图在表b中找到同一个雇员)。现在,我的当前代码返回表a和表b中该雇员的匹配项。我怎样才能阻止这一切?

rfbsl7qr

rfbsl7qr1#

这样怎么样:

with AllStaff as
(
  select 1 as Level, StaffId, Name
  from TableA
  union all
  select 2 as Level, StaffId, Name
  from TableB
),
DistinctStaff as
(
    select distinct StaffId from AllStaff
)
select s.StaffId, sRec.*
from DistinctStaff as s
   outer apply 
     (select top(1) * from AllStaff as a where a.StaffId = s.StaffId order by a.Level) as sRec
group by s.StaffId

相关问题