首页 > 解决方案 > 组织结构图 SQL 查询

问题描述

我正在尝试使用 SQL Server 创建一个表来保存一个组织结构图,但到目前为止还没有成功。我尝试过进行子选择和自连接,但我无法获得所需的输出。

这是今天的表格,显示了谁向谁报告:

1    2         3
Bob  Jon     Kevin
Bob  Mark    Paul
Bob  Jon     Ian

我想要的结果是在一列中显示所有资源,然后在右侧显示组织结构图,如下所示:

Resource    3        2       1
Kevin      Kevin    Jon     Bob
Paul       Paul     Mark    Bob
Ian        Ian      Jon     Bob
Jon        NULL     Jon     Bob
Mark       NULL     Mark    Bob
Bob        NULL     NULL    Bob

我不确定这是否可以使用 SQL 或我应该使用什么策略来完成它。枢轴、CTE 等

标签: sqlsql-server

解决方案


您可以使用applyunpivot 然后用于select distinct删除重复项:

select distinct v.*
from t cross apply
     (values (col3, col3, col2, col1),
             (col2, col2, col1, null),
             (col1, col1, null, null)
     ) v(resource, col3, col2, col1);

推荐阅读