我有一个Employee表像
emp_id bigint,
reports_to bigint,
emp_name varchar(20),
Constraint [PK_Emp] Primary key (emp_id),
Constraint [FK_Emp] Foreign key (reports_to) references [MSS].[dbo].[Emp]([emp_id])
emp_id reports_to emp_name
------ ------ --------------
1 null Sumanta
2 1 Arpita
3 null Pradip
4 1 Sujon
5 2 Arpan
6 5 Jayanti
我想所有的员工直接或间接报告Sumanta或EMP_ID(1),并与层级,就像这样:
emp_id hierarchy_level emp_name
------ --------------- ----------
2 1 Arpita
4 1 Sujon
5 2 Arpan
6 3 Jayanti
我是新来的SQL,只是找不到用什么或如何得到这些结果。 是否值得用表值变量,或者只是一个TSQL选择查询的存储过程就足够了。 任何帮助是值得欢迎的。
我所做的是 -
Select Ep.emp_id,ep.emp_eame
From Emp as E
Inner Join Emp as Ep on Ep.reports_to=E.Emp_id
Where E.reports_to=1 or E.emp_id=1;
但是这是准确的高达2级,我甚至不能产生hierarchy_level没有。 任何建议,想法............将是最有益的.........