0

假设我有一个N:N表关系,并且我正在它们之间进行连接,问题是结果有许多具有相同值的行,我想恢复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

表定义看起来像

-------------------------         --------------------------
        STREET                            COUNTRY
-------------------------         --------------------------
ID   NUMBER NOT NULL              ID   NUMBER NOT NULL
NAME VARCHAR2(45) NOT NULL        NAME VARCHAR2(45) NOT NULL
ID_COUNTRY NUMBER NOT NULL         ID_REGION NUMBER NOT NULL
...other fields                   ...other fields

-------------------------         
        REGION                            
-------------------------         
ID   NUMBER NOT NULL              
NAME VARCHAR2(45) NOT NULL        
...other fields    
4

1 回答 1

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

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

于 2013-10-18T17:37:42.020 回答