Oracle Concatenate Column值在一行中

时间:2013-10-18 17:18:10

标签: sql oracle plsql concatenation string-concatenation

假设我有一个N:N表关系,我正在他们之间进行连接,问题是结果有很多行具有相同的值,我想在一个{{1包含row的那些 实际返回的结果看起来像这样。

ids

我希望将其作为

    ID_STREET     STREET      COUNTRY       REGION    
    ------------------------------------------------
    1             street-1    country-1     region-1     
    2             street-1    country-1     region-1
    3             street-2    country-2     region-2  

表定义看起来像

        ID_STREET     STREET      COUNTRY       REGION   DUPLICATED 
    ---------------------------------------------------------------
    1             street-1    country-1     region-1     1,2
    3             street-2    country-2     region-2     3

1 个答案:

答案 0 :(得分:2)

在oracle上,聚合LISTAGG函数可以对按其他列分组的列进行字符串连接。

http://docs.oracle.com/cd/E11882_01/server.112/e10592/functions089.htm

从我从桌上收集到的内容,如果我们按照您的第一组结果执行此操作

SELECT MIN(ID_STREET), STREET, COUNTRY, REGION, 
       LISTAGG(ID_STREET, ',') WITHIN GROUP (ORDER BY STREET) AS DUPLICATED
  FROM MYTABLE
GROUP BY STREET,COUNTRY,REGION

我们最终会得到你的第二个。我需要查看原始表来显示一个可以执行您想要执行的操作的查询。