TSQL递归查询更新临时表

TSQL递归查询更新临时表,sql,sql-server,tsql,stored-procedures,recursion,Sql,Sql Server,Tsql,Stored Procedures,Recursion,我有一个查询,它递归地通过我的员工组织,得到一个所有向副总裁汇报的人的列表。此查询正在按预期工作: DECLARE @pit AS DATETIME = GETDATE(); DECLARE @table TABLE ( mgrQID VARCHAR (64) , QID VARCHAR (64) , NTID VARCHAR (64) , FullName VARCHAR (256), lvl INT

我有一个查询,它递归地通过我的员工组织,得到一个所有向副总裁汇报的人的列表。此查询正在按预期工作:

DECLARE @pit AS DATETIME = GETDATE();

DECLARE @table TABLE (
    mgrQID     VARCHAR (64) ,
    QID        VARCHAR (64) ,
    NTID       VARCHAR (64) ,
    FullName   VARCHAR (256),
    lvl        INT          ,
    metadate   DATETIME     ,
    totalCount INT          );

WITH   empList (mgrQID, QID, NTID, FullName, lvl, metadate)
AS     (SELECT   TOP 1 mgrQID,
                       QID,
                       NTID,
                       FirstName + ' ' + LastName,
                       0,
                       Meta_LogDate
        FROM     dbo.EmployeeTable_Historical
        WHERE    QID IN (SELECT director
                         FROM   dbo.attritionDirectors)
                 AND Meta_LogDate <= @pit
        ORDER BY Meta_LogDate DESC
        UNION ALL
        SELECT   b.mgrQID,
                 b.QID,
                 b.NTID,
                 b.FirstName + ' ' + b.LastName,
                 lvl + 1,
                 b.Meta_LogDate
        FROM     empList AS a CROSS APPLY dbo.Fetch_DirectsHistorical_by_qid (a.QID, @pit) AS b)
-- Insert into the counts table
INSERT INTO @table (mgrQID, QID, NTID, FullName, lvl, metadate, totalCount)
SELECT   empList.mgrQID,
         empList.QID,
         empList.NTID,
         empList.FullName,
         empList.lvl,
         empList.metadate,
         '0'
FROM     empList
ORDER BY lvl
OPTION (MAXRECURSION 10);
我的问题是

如何使用第二次查询得到的计数更新@temp totalCount?QID和Direct是这两个字段的共同点。

尝试以下方法:

update t
set t.totalCount = a.count(*) - 1
from a
join @temp t
    on a.Direct = t.QID
group by a.direct, t.QID
option (maxrecursion 10)
update t
set t.totalCount = a.count(*) - 1
from a
join @temp t
    on a.Direct = t.QID
group by a.direct, t.QID
option (maxrecursion 10)