【发布时间】:2021-07-31 16:31:29
【问题描述】:
我有一个表“公司”,其中包含如下数据,其中包含员工及其公司:
EmployeeID EmployeeName CompanyName CompanyID ParentCoID
------------------------------------------------------------------------------------------------
100 John A 500 NULL
100 John A.1 600 500
250 Paul B 800 NULL
250 Paul ABC 2000 NULL
350 Joe D 1000 5000
600 Tom E 700 NULL
600 Tom E.2 1500 700
我正在尝试显示父公司 ID 值在公司 ID 中的行,然后显示该员工的两行。所以基本上选择母公司和子公司的员工并显示这两行。
我试过了
SELECT *
FROM company
WHERE CompanyID IN (SELECT ParentCoID FROM company)
但这只会返回 CompanyID 值匹配的行,我不确定如何也包括第二行。
我对上面示例的期望输出是:
EmployeeID EmployeeName CompanyName CompanyID ParentCoID
------------------------------------------------------------------------------------------------
100 John A 500 NULL
100 John A.1 600 500
600 Tom E 700 NULL
600 Tom E.2 1500 700
由上图可知,A.1 公司是 A 的子公司,与 E 公司和 E.2 公司相同。我正在尝试选择同时在主公司和子公司中的员工,因此需要参考 ParentCoID 和 CompanyID 列。
【问题讨论】:
标签: sql sql-server tsql