我有一个员工表
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。任何建议,想法............将是最有帮助的............
您可以使用递归CTE:
; with CTE as
(
select emp_id
, reports_to
, emp_name
, 1 as level
from Emp
where emp_name = 'Sumanta'
union all
select child.emp_id
, child.reports_to
, child.emp_name
, level + 1
from Emp child
join CTE parent
on child.reports_to = parent.emp_id
)
select *
from CTE
SQL Fiddle中的示例。
问题内容: 我有一个任务有问题。 我需要计算直接或间接向特定经理报告的所有下属(与众不同) 我有一个这样的表: 例子: 我只能算直接向经理汇报的员工: 但是结果是我有这样的事情: 反而: 如果有任何建议或想法,我将很高兴。 问题答案:
问题内容: 我有课: 然后创建对象: 尝试获取所有字段后,我打电话 但是我只有一个数组 如何从所有类的所有字段包括扩展? 问题答案: 请尝试以下操作:
假设Employee_Info表中有三名员工: 我必须编写一个select sql查询,输出如下: 正如您所看到的,新的一行应该包含某个特定雇员的所有工资的总和。
问题内容: 我在这方面遇到了困难。我已经看到了一些示例,这些示例说明了如何从给定父级的自引用表中获取所有子级记录,甚至如何获取子级记录的父级。 我想做的是返回一条记录,并给所有子记录指定ID。 为了说明这一点-我有一个公司层次结构。在哪里: 我需要的是一个过程(1)弄清记录的级别,以及(2)检索该记录和所有子记录。 作为区域的想法可以看到一个区域中的所有地区和代表,而地区可以看到他们的代表。代表只
问题内容: 我正在写一个查询,以查找收入高于其部门平均工资的员工。我需要显示员工ID,薪水,部门ID和该部门的平均工资。 我有一个几乎可以正常使用的查询,但它一直显示“ ORA-00904:“ AVG_SAL”:无效标识符”错误。我正确地做到了吗?为什么会出现此无效的标识符错误? 问题答案: 我不相信您可以在WHERE子句中引用列别名(在这种情况下为avg_sal)。 您需要重复该内部查询,即:
如果我有这样一门课: 获取节点的所有父层次结构的最简单/最优雅的方法是什么? 类似于: