orig_system
имеет DNB
в качестве значения, и у них есть много owner_table_id
, связанных с DNB
. Я пытаюсь привести все идентификаторы из нескольких строк в одну строку.Как смоделировать функциональность LISTAGG в Oracle 10g?
Но Oracle 10g не поддерживает listagg
. Есть ли другой способ объединить все OWNER_TABLE_ID
в одной строке для DNB.
Ниже запрос используется:
SELECT OWNER_TABLE_ID,LISTAGG (ORIG_SYSTEM,',') WITHIN GROUP (ORDER BY ORIG_SYSTEM)
from APPS.HZ_ORIG_SYS_REFERENCES
WHERE ROWNUM < 100 GROUP BY OWNER_TABLE_ID
Ниже приведен образец данных:
OWNER_TABLE_ID, ORIG_SYSTEM
182403 DNB
16604 DNB
84818 DNB
172891 DNB
16605 DNB
84819 DNB
205544 DNB
16606 DNB
84820 DNB
Ожидаемый результат:
ORIG_SYSTEM OWNER_TABLE_ID,
DNB 182403,16604,84818,72891,16605,84819,205544,16606,84820"
Может быть, вам нужно «GROUP BY» что-то другое, кроме 'OWNER_TABLE_ID'? – mustaccio
Целая коллекция подходов: http://stackoverflow.com/questions/14243131/concatenate-results-from-a-sql-query-in-oracle – Codo
См. [** Методы агрегирования строк Oracle **] (https://lalitkumarb.wordpress.com/category/oracle-string-aggregation/) –