求PG高手指点:树状结构表转换为交叉表

machine123 2020-06-08 11:32:14
遇到一个以树状结构存储的层级部门需要转换为交叉表,超高难度,想了好几天没解决,请高手指点!!先谢谢啦~~~!!!!

源表结构:
|--ID--|--部门名称 --|--部门经理--|--上级部门--|
| 1 | A部门 | 张三 | |
| 2 | A-1 部门 | 李四 | 1 |
| 3 | A-2部门 | 王五 | 1 |
| 4 | A-1-1部门 | 谭六 | 2 |
| .... | ... | ... | ... |
源表中层级结构不固定,大概在7~8级部门,数据量有300+条

希望输出结构:
|--ID--|--部门名称 --|--部门经理--|--n级部门--|--n级部门名称--|--n-1级部门--|-- .... --| -- 1级部门 --|
| 2 | A-1部门 | 李四 | | | | | A部门 |
| 3 | A-2部门 | 王五 | | | | | A部门 |
| 3 | A-1-1部门 | 王五 | | | | A-1-1部门 | A部门 |
| .............................................................................. |

求各位高手指点!!!!
...全文
45 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
foucus、 2020-06-27
  • 打赏
  • 举报
回复
可以使用ltree扩展来实现类似的功能:https://www.postgresql.org/docs/13/ltree.html 例如这样: bill=# select * from ltreetest ; c1 ------- A A.1 A.1.1 A.2 A.1.2 A.2.1 (6 rows) bill=# select * from ltreetest where c1 @> 'A.1.2'; c1 ------- A A.1 A.1.2 (3 rows)

954

社区成员

发帖
与我相关
我的任务
社区描述
PostgreSQL相关内容讨论
sql数据库数据库架构 技术论坛(原bbs)
社区管理员
  • PostgreSQL社区
  • yang_z_1
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧