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