Sql 如果两个表中都有值,则指定1

Sql 如果两个表中都有值,则指定1,sql,sql-server,if-statement,case-when,Sql,Sql Server,If Statement,Case When,我有两张列为CompanyID的表格。在表2中可以找到有股东的公司,在表1中可以找到所有公司。因此,在表1中,我想添加一个虚拟变量,如果公司ID在表2中(这意味着公司有股东),则分配一个1,如果不在表2中,则分配一个0 Table1 CompanyID Location #-of-employees 5234 NY 10 5268 DC 2 5879

我有两张列为CompanyID的表格。在表2中可以找到有股东的公司,在表1中可以找到所有公司。因此,在表1中,我想添加一个虚拟变量,如果公司ID在表2中(这意味着公司有股东),则分配一个1,如果不在表2中,则分配一个0

    Table1  CompanyID  Location  #-of-employees
          5234       NY          10
          5268       DC          2
          5879       NY          8
          6897       KS          100
          8789       CA          1
          9992       OH          201
          9877       TX          15

Table2 CompanyID   #-of-Shareholders
          5234            5
          5879            2
          6897            4
          8789            2
我尝试使用这个查询,但它没有提供我期望的输出

Expected output:
    Table1  CompanyID  Location  #-of-employees Dummy
              5234       NY          10           1
              5268       DC          2            0
              5879       NY          8            1
              6897       KS          100          1
              8789       CA          1            1
              9992       OH          201          0
              9877       TX          15           0
您可以使用EXISTS

SELECT CASE WHEN companyID IN table2 THEN 1
ELSE 0
END AS dummy
FROM table1

您必须为此使用子查询。下面的代码工作正常

SELECT  CASE
            WHEN EXISTS(SELECT 1 FROM Table2 AS T2 WHERE T1.CompanyID = T2.CompanyID) THEN 1
            ELSE 0
        END AS Dummy
FROM    Table1 AS T1;
如果数据库的版本为
2012+
,则与
左连接一起使用作为:

否则

SELECT CASE WHEN companyID in(select CompanyId  from table2) THEN 1
ELSE 0
END AS dummy
FROM table1 
select t1.*, iif(#_of_Shareholders is null, 0, 1) as dummy
  from table1 t1
  left join table2 t2
    on ( t1.CompanyID = t2.CompanyID );
select t1.*, 
       ( case when #_of_Shareholders is null then 0 else  1 end ) 
       as dummy
  from table1 t1
  left join table2 t2
    on ( t1.CompanyID = t2.CompanyID );
select t1.*,
       sign(coalesce(#_of_Shareholders,0))
       as dummy
  from table1 t1
  left join table2 t2
    on ( t1.CompanyID = t2.CompanyID );