TSQL具有来自子查询的语句

时间:2014-07-09 23:33:04

标签: sql sql-server tsql stored-procedures

我目前正在使用2张桌子。

表1 empTable

表2 empowermentSubmissions

在我的empTable中有很多字段,但我关注的是empIDsupEmpID

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子句可以使用子查询中的数据。

有什么想法吗?

1 个答案:

答案 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')