加入同一个表以在oracle中显示行作为列

时间:2014-09-22 04:56:06

标签: oracle

我有一个场景,我需要从列中取几行并将其作为单独的列。

我现在的表:

Id  Description
1   abc
2   abc
3   abc
4   abc
1   xyz
2   xyz
3   xyz
4   xyz

必需的输出:

id  Desp1   Desp2
1   abc     xyz
2   abc     xyz
3   abc     xyz
4   abc     xyz

任何人都可以帮助我。

1 个答案:

答案 0 :(得分:0)

您可以使用listagg函数以及instrsubstr函数的组合,而不是自我加入。

select id,substr(Description, 0, instr(Description, ',',1,1)-1) Desp1,
substr(Description, instr(Description, ',',1,1)+1) Desp2
from
(select id, listagg(Description,',') within group (order by Description) as 
Description from sam group by id)

注意:上述查询用逗号分隔Description字段,并且只拆分为两列,如示例所示。