将列组值作为行结果在oracle中

时间:2014-05-09 08:13:18

标签: sql oracle oracle10g

我有表格产品,有三个列ID,名称和成熟度,如下所示。

            id      name    maturity
            -------------------------------
            224     cash    1d
            224     cash    2d
            224     cash    3d
            224     cash    4d
            225     bond    5w
            225     bond    6w
            225     bond    7w
            225     bond    8w

这里我需要输出像(我的意思是如果我发出一个sql语句)

            224     cash    1d,2d,3d,4d
            225     bond    5w,6w,7w,8w

可以请一些人帮忙。

1 个答案:

答案 0 :(得分:0)

LISTAGG函数正是您所寻找的(至少在Oracle 11g中)。

完整的语法示例:

SELECT id, name, LISTAGG(maturity, ', ') WITHIN GROUP (ORDER BY maturity) FROM your_table GROUP BY id

注意:如果需要,您还可以将分组条件更改为GROUP BY name