首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL层次可视化

SQL层次可视化
EN

Stack Overflow用户
提问于 2019-02-28 15:30:19
回答 1查看 139关注 0票数 0

我有以下问题:

  • 有一个叫做分支的实体。
  • 一个分支可以属于另一个分支,也可以是一个独立的分支。
  • 父分支可以属于另一个分支,也可以是最高级别的分支。
  • 可能有高达4-5级的层次结构。
  • 没有循环层次结构(据我们目前所知)。

我想以某种方式从SQL导出数据,并将其可视化到某种树形图中。任何想法都会受到高度赞赏。

这是我的数据模型的快照。注意,当DivisonParentBranch = RegionParentBranch =分支时,这意味着分支是独立的。

代码语言:javascript
复制
DivisionParentBranch RegionParentBranch Branch
                 150                401    401
                 150                401    402
                 150                401    403
                 150                401    404
                 273                248    248
                 273                248    277
                 273                248    278
                 273                273    273
                 273                273    286
                 273                273    408
                 273                273    809
                 356                356    356
                 356                356    358
                 356                356    363
                 356                356    405
                 356                356    773
                 356                357    357
                 356                361    361
                 356                361    364
                 739                511    511
                 739                511    513
                 739                511    514
                 739                511    515
                 739                511    517
                 739                511    519
                 739                511    520
                 739                511    779

更新:

预期的结果是可视化这些分支层次结构。与下面的图像相仿的东西。我们已经有了500+分支,因此需要以某种方式将其自动化。

EN

回答 1

Stack Overflow用户

发布于 2019-02-28 16:37:36

这并不漂亮,我相信有人会更好地使用ROLLUP函数,但是从这个函数的输出开始,您可以循环遍历结果集,并根据下面的select构建一个基于层次结构的显示。第1级将是树的最顶端部分,第2级将链接到第1级并成为第二行,等等。

另外,正如评论中提到的,请不要将“数据”作为屏幕打印。

代码语言:javascript
复制
SELECT  div_branch, null as reg_branch, null as branch, '1' as level
FROM    @bracnhes
GROUP   BY div_branch
union all 
SELECT  div_branch, reg_branch, null as branch, '2' as level
FROM    @bracnhes
GROUP   BY div_branch, reg_branch
union all 
SELECT  div_branch, reg_branch, branch, '3' as level
FROM    @bracnhes
GROUP   BY div_branch, reg_branch, branch

我的输出,至少是我费心测试的一点,如下所示

代码语言:javascript
复制
div_branch  reg_branch  branch  level
150         NULL        NULL        1
273         NULL        NULL        1
356         NULL        NULL        1
150         150         NULL        2
150         401         NULL        2
273         248         NULL        2
273         273         NULL        2
356         356         NULL        2
356         357         NULL        2
356         361         NULL        2
150         150         150         3
150         150         151         3
150         150         153         3
150         150         154         3
150         150         961         3
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54929131

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档