Sql 如果两个表中都有值,则指定1
我有两张列为CompanyID的表格。在表2中可以找到有股东的公司,在表1中可以找到所有公司。因此,在表1中,我想添加一个虚拟变量,如果公司ID在表2中(这意味着公司有股东),则分配一个1,如果不在表2中,则分配一个0Sql 如果两个表中都有值,则指定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
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 );