我有一个雇员表,其结构如下所示。我试图用逗号分隔的值构建一个列,这些值直接向员工报告。我用经理的名字很容易理解。实际数据具有ID。
EMPID NAME MANAGER_1 MANAGER_2 MANAGER_3 MANAGER_4....... MANAGER_30
A3456 JOHN MEGAN DEREK MIKE NULL
S4593 ASHTON MEGAN DEREK MIKE NULL
G8394 MICHAEL MEGAN DEREK MIKE NULL
D9038 MIKE MEGAN DEREK NULL
J4890 DEREK MEGAN NULL
M4940 MEGAN NULL
层级结构如下:约翰的直接经理是迈克,迈克向德里克汇报,德里克向梅根汇报阿什顿的直接经理是迈克,迈克向德里克汇报,德里克向梅根汇报。
我正在尝试建立一个新的专栏,它将创建一个逗号分隔的直接报告列表,例如:对于迈克,直接报告将是约翰,阿什顿,迈克尔对于德里克,直接报告将是迈克
预期结果
EMPID NAME MANAGER_1 MANAGER_2 MANAGER_3 MANAGER_4....... Direct Reports
A3456 JOHN MEGAN DEREK MIKE NULL NULL
S4593 ASHTON MEGAN DEREK MIKE NULL NULL
G8394 MICHAEL MEGAN DEREK MIKE NULL NULL
D9038 MIKE MEGAN DEREK NULL JOHN, ASHTON, MICHAEL
J4890 DEREK MEGAN NULL MIKE
M4940 MEGAN NULL MEGAN
要在sql中构建它,我应该使用分区逻辑吗?
1条答案
按热度按时间jk9hmnmh1#
这很简单-只要使用coalesce:
此查询将为您提供所需的:
您只需要将结果保留到原始查询。
但是这样的结构很不方便。我建议使用父->子关系的普通层次结构表