parent

问题描述 投票:0回答:1

我有一个父子id_table的层次结构--如

|parent|child|
|------|-----|
|      |    0|
|     0|    1|
|     0|    2|
|     0|    3|
|     1|    4|
|     1|    5|
|     2|    6|
|     4|    7|
|     4|    8|

我正在建立一个可视化的树形层次结构,上面的数据将被格式化为。

|parent|child1|child2|child3
|------|------|------|------
|     0|     1|4     |     7
|     0|     1|4     |     8
|     0|     1|5     |
|     0|     2|6     |
|     0|     3|      |

现在我想修改这个查询,以包含每一个父独立的行,而不包含子独立的行,所以上面的数据会变成:

|parent|child1|child2|child3
|------|------|------|------
|     0|      |      |
|     0|     1|      |
|     0|     1|     4|
|     0|     1|     4|     7
|     0|     1|     4|     8
|     0|     1|     5|
|     0|     2|      |
|     0|     2|     6|
|     0|     3|      |

为了得到第一个结果,我用重复的左联接来建立数据(使用上面第一个数据的例子) 因为根据我的理解,我不能用递归来做这个,例如:

SELECT t1.child AS parent
       t2.child AS child1
       t3.child AS child2
       t4.child AS child3
FROM id_table t1

LEFT JOIN id_table t2
ON t1.child = t2.parent

LEFT JOIN id_table t3
ON t1.child = t3.parent

LEFT JOIN id_table t4
ON t1.child = t4.parent

WHERE t1.child = '0'

这让我得到第二个例子,但我缺少每个父辈的记录,如第三个例子所示。

我想这可能是一个简单的问题,我只是在语法上感到困难。TIA的任何帮助。

EDIT:我之前有个问题,在SAS EG中也有类似的实现。SQL - 递归树层次结构,每层都有记录。然而,这是在SAS的SQL实现中,它的限制更多--用这种方法,我最终不得不在每一级创建临时表,然后联合最终结果,这很混乱。试图找到一个更干净的解决方案。

sql parent-child teradata hierarchy
1个回答
© www.soinside.com 2019 - 2024. All rights reserved.