SQL层次结构可视化

时间:2019-02-28 15:30:19

标签: sql sql-server data-visualization

我有以下问题:

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

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

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

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

enter image description here

更新:

预期结果是可视化这些分支层次结构。如下图所示。我们有大约500多个分支机构,因此需要以某种方式使其自动化。 enter image description here

1 个答案:

答案 0 :(得分:0)

这不太好,我敢肯定有人会使用GROUP BY ROLLUP函数做得更好,但是从此输出开始,您可以遍历结果集并根据下面选择的层次结构构建显示。级别1是树的最顶部,级别2将链接到级别1并是第二行,依此类推。

此外,如评论中所述,请勿在屏幕截图中张贴“数据”。

%--%

我的输出,至少是我不愿意测试的一点看起来像这样

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
相关问题