如何在使用 group by 子句时获取另一列值?

How to get another column value while using group by clause?

我不知道该如何查询。 我需要计算拥有 IdApprover 的员工下属的员工人数,但这只是一个 table。我想要批准人的姓名,其中对应于 IdApprover = IdEmployee


SELECT COUNT(IdApprover), IdApprover, EmployeeName
FROM tblEmployee 
GROUP BY IdApprover
ORDER BY COUNT(IdApprover) DESC

上面提到的所有列都在同一个 table 上。 我想得到

Count(IdApprover) IdApprover EmployeeName
3                 45         John Doe
2                 26         James Bond

其中员工姓名为审批人姓名,也是员工。

暗中试探我假设你的 tblEmployee table 看起来有点像这样

DECLARE @tblEmployee TABLE
(
    IdApprover int not null,
    IdEmployee int not null,
    EmployeeName nvarchar(50) not null
)
INSERT INTO @tblEmployee VALUES (1,1,'Approver 1');
INSERT INTO @tblEmployee VALUES (2,2,'Approver 2');
INSERT INTO @tblEmployee VALUES (3,3,'Approver 3');
INSERT INTO @tblEmployee VALUES (1,4,'Employee 1');
INSERT INTO @tblEmployee VALUES (1,5,'Employee 2');
INSERT INTO @tblEmployee VALUES (1,6,'Employee 3');
INSERT INTO @tblEmployee VALUES (2,4,'Employee 4');
INSERT INTO @tblEmployee VALUES (2,4,'Employee 5');
INSERT INTO @tblEmployee VALUES (3,4,'Employee 6');
INSERT INTO @tblEmployee VALUES (3,4,'Employee 7');
INSERT INTO @tblEmployee VALUES (3,4,'Employee 8');
INSERT INTO @tblEmployee VALUES (3,4,'Employee 9');

记录是这样的,前 3 条记录是由 IdApprover = IdEmployee 指定的审批人,员工链接到不同的员工(他们的审批人)。

IdApprover IdEmployee EmployeeName
1 1 Approver 1
2 2 Approver 2
3 3 Approver 3
1 4 Employee 1
1 5 Employee 2
1 6 Employee 3
2 4 Employee 4
2 4 Employee 5
3 4 Employee 6
3 4 Employee 7
3 4 Employee 8
3 4 Employee 9

为了解决您的问题,我将使用几个子查询,首先获取每个审批人的员工数量(不包括审批人本身),其次使用您对 IdApprover = 的要求获取审批人的姓名IdEmployee.

SELECT
 c.IdApprover
,a.EmployeeName AS ApproverName
,c.EmployeeCount
FROM
(
-- Get Counts first and put in sub query wrapper
SELECT
 IdApprover
,COUNT(IdApprover) AS EmployeeCount
FROM @tblEmployee
WHERE IdApprover <> IdEmployee
GROUP BY
IdApprover
) c

JOIN
(
-- Sub query to get Approver names
SELECT
 IdApprover
,EmployeeName
FROM @tblEmployee
WHERE IdApprover=IdEmployee
) a ON a.IdApprover=c.IdApprover

这给了我们

的结果
IdApprover ApproverName EmployeeCount
1 Approver 1 3
2 Approver 2 2
3 Approver 3 4