具有相同的功能Excel中VLOOKUP SQL Server查询(SQL Server query

2019-09-02 11:01发布

我有数据的2列,我需要相互比较 - 列A和B列

A栏:

Steve
Jane
Mary
Peter
Ed
Scott
Ted

B栏:

Peter
Scott
David
Nancy
  • 塔A具有比B列数据量较大
  • 但它可能没有B列中的所有值

我需要找出在B列中的值也都在列A

输出预期上述样品数据:

Peter   TRUE
Scott   TRUE
David   FALSE
Nancy   FALSE
  • 需要使用SQL Server / T-SQL来获得此输出。
  • 列A和列B都在2个单独的表中的字段
  • 有2个表中没有其他列

感谢你的帮助!

Answer 1:

select 
   b.columnb,
   case when a.columna is null then 'FALSE' else 'TRUE' end 

from
   tableb b left outer join
   tablea a on b.columnb = a.columna


Answer 2:

与左连接的问题是,有可能是在表A重复

如果这是一个问题,你可以这样做:

select b.col, (case when a.val is NULL then 'FALSE' else 'TRUE' end)
from b left outer join
     (select distinct a.val
      from a
     ) a
     on b.col = a.val;

表达本的另一种方法是使用一个相关子查询。 这使得在所有的逻辑select

select b.col,
       (case when exists (select 1 from a where a.val = b.col)
             then 'TRUE'
             else 'FALSE'
       end)
from b


文章来源: SQL Server query with same functionality as Excel VLookup