sql - 组织结构图 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 等
解决方案
您可以使用apply
unpivot 然后用于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);
推荐阅读
- python - Pandas Python 通过从另一个数据帧的行中选择系数来乘以列值
- amazon-web-services - AWS API Gateway 可以处理多少 API 请求的理论限制?
- spring-batch - 在 SkipPolicy SpringBatch 中访问 FlatFileReader 读取的资源
- xamarin - 没有多目标的 csproj 中的条件 NuGet PackageReference
- amazon-web-services - ECS 服务:如果没有为服务任务分配公共 IP,则无法从 ECR 注册表中提取 docker 映像
- c++ - C++ 程序如何根据编译选项打印 0 或 1?
- linux - smartmontools 替代方案或建议
- python - 如何使用 pushshift 获得最高分的子 reddit 提交?
- arrays - 在 VBA 中,如何读取作为数组的书签?
- python - Elasticsearch 7.11 Python 扫描是无限的