针对不存在的行

时间:2016-04-04 14:39:59

标签: sql sql-server tsql sql-server-2014 not-exists

我有一张表,其公司名称和联系人均为其各自的公司。类型列具有0或1,表示它是公司还是个人。每行都有一个具有唯一联系号的列。这个人是' row有一列名为"公司编号"将人与公司联系起来。我试图在同一个表中返回显示没有任何联系人的公司的行。不知道如何开始编写此查询。

1 个答案:

答案 0 :(得分:1)

试试这样:

DECLARE @tbl TABLE(ContactNo INT, Name VARCHAR(100), [Type] INT,CompanyNo INT);
INSERT INTO @tbl VALUES
 (100,'ACME, Inc.',0,100)
,(200,'Bob Smith',1,100)
,(300,'John Doe',1,100)
,(400,'Widget World',0,400)
,(500,'Fishing, Inc.',0,500)
,(600,'Jane Doe',1,500);

WITH TheCompanies AS
(
    SELECT * 
    FROM @tbl AS tbl
    WHERE tbl.[Type]=0
)
SELECT *
FROM TheCompanies
WHERE NOT EXISTS(SELECT 1 FROM @tbl WHERE [Type]=1 AND CompanyNo=TheCompanies.CompanyNo);