如何在员工数据中包含经理数据

  • 本文关键字:数据 包含 sql sql-server
  • 更新时间 :
  • 英文 :


我有一个名为Employees的表

就业率经理IDtbody> <<tr>
ID 全名 员工类型
143萨姆·史密斯道明>工资146
144周杰伦Reddy兼职工资146
145尼克年轻全职工资146
146特雷福Simm全职工资147
147贾斯汀•彼得斯兼职工资147
148丽莎霍华德道明>工资140
149尼基西道明>工资140
150吉玛余道明>工资146
151莎莉张兼职工资140
152詹姆斯希拉里全职工资146
153尼基塔肖全职工资146

如果您使用CTE来确定相关员工,那么您可以在查询上联合以获得他们的经理,例如

WITH cte AS (
SELECT * 
FROM Employees
WHERE [Employment Rate] = 'Wage'
)
SELECT * FROM cte
UNION ALL
SELECT * FROM Employees WHERE Id IN (SELECT [Manager ID] FROM cte);

你可以使用像这样的子查询

Select * 
From Employees
Where [Employment Rate] = 'Wage'
or ID in (SELECT [Manager ID] FROM Employees Where [Employment Rate] = 'Wage')

您也可以使用UNION语句——我更喜欢它,因为我将在那里添加一个新列,显示数据的来源——以我的经验,当以这种方式处理数据时,您总是希望这样做:

SELECT 'Worker' as SOURCE,
ID, [Full Name], [Employee Type], [Employment Rate], [Manager ID]
FROM Employees
WHERE [Employment Rate] = 'Wage'
UNION ALL
SELECT 'Manager' as SOURCE,
ID, [Full Name], [Employee Type], [Employment Rate], [Manager ID]
FROM Employees
WHERE ID IN (SELECT [Manager ID] FROM Employees Where [Employment Rate] = 'Wage')

注意——如果一个雇员有一个工资率,他们将在这个查询中出现两次,但不会在第一次查询中出现。

相关内容

  • 没有找到相关文章

最新更新