我目前正在使用2张桌子。
表1 empTable
表2 empowermentSubmissions
在我的empTable
中有很多字段,但我关注的是empID
和supEmpID
。
EmpID
是员工的ID,SupEmpID
是主管的ID。
SELECT TOP 5 count(A.[nomineeEmpID]) as totalSubmissions,
A.[nomineeEmpID],
B.[FirstName] + ' ' + B.[LastName] as supName,
B.[ntid] as supNTID,
(
SELECT count(SupEmpID) as totalTeammates FROM EmpTable WHERE SupEmpID = A.[nomineeEmpID]
)
FROM empowermentSubmissions as A
JOIN empTable as B
ON A.[nomineeEmpID] = B.[EmpID]
GROUP BY nomineeEmpID, B.[FirstName], B.[Lastname], B.[ntid]
HAVING count(SupEmpID) > 0
ORDER BY totalSubmissions desc
FOR XML PATH ('data'), TYPE, ELEMENTS, ROOT ('root');
我试图从提交表中拉出前5个统计数据给主管。为此,我需要查看emmployeeTable并找到EmpID
字段中SupEmpID
的所有员工。这意味着有人会向该员工报告,使他们成为主管。
你可以看到我的意图,但它无法正常工作。我不认为having子句可以使用子查询中的数据。
有什么想法吗?
答案 0 :(得分:0)
用新的声明解决了这个问题:
SELECT TOP 5 count(A.[nomineeEmpID]) as totalSubmissions,
A.[nomineeEmpID],
B.[FirstName] + ' ' + B.[LastName] as supName,
B.[ntid] as supNTID
FROM empowermentSubmissions as A
JOIN empTable as B
ON A.[nomineeEmpID] = B.[EmpID]
GROUP BY nomineeEmpID, B.[FirstName], B.[Lastname], B.[ntid], SupEmpID
HAVING (SELECT count(SupEmpID) as totalTeammates FROM EmpTable WHERE SupEmpID = A.[nomineeEmpID]) > 0
ORDER BY totalSubmissions desc
FOR XML PATH ('data'), TYPE, ELEMENTS, ROOT ('root')