如果其他列相同,则SQL结果表包含已加入的行项。救命?

时间:2011-11-09 03:48:57

标签: java sql oracle

这是我的问题:

这是目前的结果:

    |   Name   |  Alias  |   Role   |
        mark       mak       User
        mark       mak       Admin

这是想要的结果:

    |   Name   |  Alias  |    Role    |
        mark       mak     User, Admin

这可以用SQL(现在使用Oracle和Java EE / JPA / Hibernate)吗?

2 个答案:

答案 0 :(得分:3)

GROUP_CONCAT是一个MySQL函数。

以下是Oracle的SQL:

  SELECT Name, LISTAGG(Role, ',') WITHIN GROUP (ORDER BY Role) AS Roles
    FROM Your_Table
GROUP BY Name;

答案 1 :(得分:0)

正如类似问题所述,以下Oracle Base文章对此进行了深入介绍:http://www.oracle-base.com/articles/misc/StringAggregationTechniques.php

简而言之,您可以使用LISTAGG函数或WM_CONCAT函数,具体取决于您运行的Oracle版本。