Oracle 11查询可将多行合并为1行

时间:2018-12-13 16:18:39

标签: sql oracle oracle11g

我们正在使用Oracle 11。 一共有3列:ID,ParentID,级别,名称。

级别1是最高级别,然后是级别2,然后是级别3。

例如:

ID  ParentID  Level Name
10   12         3   Name10
11   (null)     1   Name11
12   11         2   Name12

如何创建一个查询,该查询将在1行中返回它们,如下所示:

ID  ParentID  NameParent    Child1  NameChild1  Child2  NameChild2
11  (null)    Name11        12      Name12      10      Name10

谢谢。

1 个答案:

答案 0 :(得分:0)

您可以将表与自身连接起来,以将所有三行合并为一个:

select
  t1.id, t1.parentid, t1.name as nameparent,
  t2.id as child1, t2.name as namechild1,
  t3.id as child2, t3.name as namechild2  
from my_table t1
join my_table t2 on t2.parentid = t1.id
join my_table t3 on t3.parentid = t2.id
where t1.parentid is null