1

我在弄清楚如何创建一个表来显示子列与其后续父列的所有关系时遇到了一些麻烦。我在 Teradata SQL 助手中使用 SQL。

例如,这是我拥有的数据:

家长 | 孩子                               
一个 | 乙                                                     
一个 | C         
乙| D           
E | 乙

我希望能够获得一个输出表,显示最低级别的子元素及其所有后续父元素,如下所示:

儿童 | 父L1 | 父级 L2        
C | 一种       
D | 乙| 一种       
乙

问题是,我不知道我的数据中存在多少父级,并且我只能访问查询数据,因此我无法创建新表、更改此表或更改任何值。

有没有办法在查询中获得预期的输出?

谢谢!

4

1 回答 1

3

像这样的东西(用 PostgreSQL 测试,因为我没有可用的 Teradata):

with recursive tree as (

    select parent, child, child||'/'||parent as path
    from foo
    where child not in (select parent from foo)
    or parent = child

    union all

    select c.parent, c.child, p.path||'/'||c.parent
    from foo c
      join tree p on c.child = p.parent
    where c.parent <> c.child
)
select path
from tree
order by parent;
于 2012-07-04T10:22:00.867 回答