2013-10-18 51 views
0

假設我有一個N:N表關係,並且我正在執行它們之間的連接,問題是結果中有許多具有相同值的行,並且我想繼續其中一個row包含ids
實際返回的結果是這樣的。Oracle在單行中連接列值

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  
+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 

我們想最終你的第二個的。我需要查看原始表格以顯示可以執行您想要的操作的查詢。

+0

僅適用於Oracle 11g或更高版本。 – DCookie

+1

[WM_CONCAT](http://psoug.org/definition/WM_CONCAT.htm)可用於早期版本。 –