SQL - 使用GROUP BY时以逗号分隔的多个值

Roy*_*ico 10 sql oracle oracle10g

我的数据看起来像

CUSTOMER,  CUSTOMER_ID, PRODUCT
ABC INC    1            XYX
ABC INC    1            ZZZ
DEF CO     2            XYX
DEF CO     2            ZZZ
DEF CO     2            WWW
GHI LLC    3            ZYX
Run Code Online (Sandbox Code Playgroud)

我想写一个查询,使数据看起来像这样:

CUSTOMER, CUSTOMER_ID, PRODUCTS
ABC INC   1            XYX, ZZZ
DEF CO    2            XYX, ZZZ, WWW
GHI LLC   3            ZYX
Run Code Online (Sandbox Code Playgroud)

如果有帮助,请使用Oracle 10g.我看到了一些可以使用MYSQL工作的东西,但我需要一个简单的SQL或ORACLE等价物.我也看过可以制作的存储过程的例子,但是,我不能使用我正在使用的产品的存储过程.

如果我使用它,它在MySQL中是如何工作的

SELECT CUSTOMER, 
       CUSTOMER_ID, 
       GROUP_CONCAT( PRODUCT ) 
FROM MAGIC_TABLE 
GROUP BY CUSTOMER, CUSTOMER_ID
Run Code Online (Sandbox Code Playgroud)

谢谢.

Scr*_*Dev 15

我认为LISTAGG是在这种情况下使用的最佳聚合组:

  SELECT CUSTOMER, CUSTOMER_ID,
         LISTAGG(PRODUCT, ', ') WITHIN GROUP (ORDER BY PRODUCT)
    FROM SOME_TABLE
GROUP BY CUSTOMER, CUSTOMER_ID
ORDER BY 1, 2
Run Code Online (Sandbox Code Playgroud)

  • LISTAGG在10g中无法使用. (3认同)

Con*_*lls 3

此链接指的是在Oracle上执行此操作的不同方法的许多示例.看看你的数据库是否有权限.

  • -1,因为这个答案本身是无用的。请考虑通过总结链接中的内容来改进您的答案,以防链接将来失效。 (7认同)