首页 > 解决方案 > 在Sql中,对于高级经理,如果员工也是经理,则将其经理更新为员工姓名

问题描述

下面是我的数据。将这封信视为独特的员工。高级经理 (SM) 的示例 - A. 我的员工也是经理。然后我想将 Manager 列更新为与 Employee 相同。对于高级经理 B,没有员工是经理,所以不必做任何事情。如何更新经理列?预期结果如下。

数据:

 Senior Manager Manager Employee

    A           NULL    X
    A           NULL    Y
    A           NULL    Z
    A           X       C
    A           Y       D
    A           Z       E
    B           NULL    F
    B           NULL    G

预期结果

 Senior Manager Manager Employee
    A           X       X
    A           Y       Y
    A           Z       Z
    A           X       C
    A           Y       D
    A           Z       E
    B           NULL    F
    B           NULL    G

标签: sqlsql-server

解决方案


我认为这里有一点自我加入行动COALESCE()应该让你进入球场:

SELECT Employee.[Senior Manager], 
    COALESCE(Employee.[Manager], [Manager].[Manager]) as [Manager], 
    Employee.Employee
FROM [Table] as [Employee]
    LEFT OUTER JOIN [Table] as [Manager]
        ON [Employee].[Employee] = [Manager].[Manager]

推荐阅读