Oracle 9i (veya öncesi) kullanarak bu sorunu çözmek isteyenler için, LISTAGG mevcut olmadığından muhtemelen SYS_CONNECT_BY_PATH kullanmanız gerekecektir.
OP'yi yanıtlamak için, aşağıdaki sorgu Tablo A'daki PID'yi görüntüler ve Tablo B'deki tüm DESC sütunlarını birleştirir:
SELECT pid, SUBSTR (MAX (SYS_CONNECT_BY_PATH (description, ', ')), 3) all_descriptions
FROM (
SELECT ROW_NUMBER () OVER (PARTITION BY pid ORDER BY pid, seq) rnum, pid, description
FROM (
SELECT a.pid, seq, description
FROM table_a a, table_b b
WHERE a.pid = b.pid(+)
)
)
START WITH rnum = 1
CONNECT BY PRIOR rnum = rnum - 1 AND PRIOR pid = pid
GROUP BY pid
ORDER BY pid;
Anahtarların ve değerlerin hepsinin bir tabloda yer aldığı durumlar da olabilir. Aşağıdaki sorgu, Tablo A'nın olmadığı ve yalnızca Tablo B'nin bulunduğu yerlerde kullanılabilir:
SELECT pid, SUBSTR (MAX (SYS_CONNECT_BY_PATH (description, ', ')), 3) all_descriptions
FROM (
SELECT ROW_NUMBER () OVER (PARTITION BY pid ORDER BY pid, seq) rnum, pid, description
FROM (
SELECT pid, seq, description
FROM table_b
)
)
START WITH rnum = 1
CONNECT BY PRIOR rnum = rnum - 1 AND PRIOR pid = pid
GROUP BY pid
ORDER BY pid;
Tüm değerler istenildiği gibi yeniden sıralanabilir. Bireysel birleştirilmiş açıklamalar PARTITION BY yan tümcesinde yeniden sıralanabilir ve PID'lerin listesi son ORDER BY yan tümcesinde yeniden sıralanabilir.
Alternatif olarak: tüm tablodaki tüm değerleri tek bir satıra birleştirmek istediğiniz zamanlar olabilir.
Buradaki ana fikir, tanımlanacak grup grubu için yapay bir değer kullanmaktır.
Aşağıdaki sorguda, '1' sabit dizesi kullanılır, ancak herhangi bir değer çalışır:
SELECT SUBSTR (MAX (SYS_CONNECT_BY_PATH (description, ', ')), 3) all_descriptions
FROM (
SELECT ROW_NUMBER () OVER (PARTITION BY unique_id ORDER BY pid, seq) rnum, description
FROM (
SELECT '1' unique_id, b.pid, b.seq, b.description
FROM table_b b
)
)
START WITH rnum = 1
CONNECT BY PRIOR rnum = rnum - 1;
Bireysel birleştirilmiş açıklamalar PARTITION BY yan tümcesinde yeniden sıralanabilir.
Bu sayfadaki diğer bazı cevaplar da bu son derece yararlı referanstan bahsetti:
https://oracle-base.com/articles/misc/string-aggregation-techniques