如何根据级别获得员工总数

时间:2017-03-21 05:16:36

标签: sql-server

我有一个表 - userinfo ,其中我有一些属性用户ID,FLname,ReportTo,TotalempUnderUser 我试图查找总数每个级别的员工如何实现这一目标

对于用户 null ReportTo 应该让所有用户计数在下面的表和子项中它应该必须进一步获得所有 ReportTo 计数 和 这是预期的输出

userid         FLname     ReportTo        TotalempUnderUser

1               abc         null            4
2               xyz         1               2
3               aaa         1               0
4               wer         2               1
5               dxd         4               0

我不知道如何得到这个和 我试过这个查询

With cte as (
  select userid,ReportTo from userinfo
  union all
  select c.userid,e.ReportTo 
  from cte c join userinfo e on (c.ReportTo=e.userid)
  )

select m.ReportTo,count(e.userid) as Count_of_Employees
from userinfo m 
left join cte e on (e.ReportTo=m.ReportTo) where m.userid=1
group by m.ReportTo
OPTION(MAXRECURSION 0)

如果我检查 TotalempUnderUser 的用户ID 1,预期输出为 4

1 个答案:

答案 0 :(得分:1)

这真的让我很难过,我希望有一个更简单的陈述(我希望这是正确的,至少你的样本似乎是这样):

+------------+---------------------+---------------------+
| Child_Code |     Plan_Date_1     |     Plan_Date_2     |
+------------+---------------------+---------------------+
|     000001 | 21.02.2017 00:00:00 | 21.03.2017 00:00:00 |
+------------+---------------------+---------------------+