SQL — записи дочерних таблиц сводятся к родительским — Oracle

У меня есть родительская и дочерняя таблицы, как показано ниже для Oracle.

Должны отображать дочерние записи, разделенные запятой.

T_OPT_PARENT

OPT | OPT_DESC| STATUS 
XY  | XY_DESC | A 
YZ  | YZ_DESC | A 
ZZ  | ZZ_DESC | A 

T_OPT_CHILD

OPT | CODE
XY  | ONE_CODE
XY  | TWO_CODE
XY  | THREE_CODE
ZZ  | ONE_CODE
ZZ  | TWO_CODE

Ожидаемый результат

OPT | OPT_DESC| CODE                         | STATUS 
XY  | XY_DESC | ONE_CODE,TWO_CODE,THREE_CODE | A
YZ  | YZ_DESC |                              | A 
ZZ  | ZZ_DESC | ONE_CODE, TWO_CODE           | A 

Может ли кто-нибудь помочь мне построить SQL-запрос для получения ожидаемого результата.


person Vinod    schedule 11.12.2017    source источник


Ответы (1)


Попробуйте этот ответ:

SELECT A.OPT,A.OPT_DESC,D.List AS CODE,A.STATUS FROM T_OPT_PARENT A
LEFT JOIN(
select OPT,
  listagg(CODE, ',') 
    within group (order by OPT) as list 
from T_OPT_CHILD
group by OPT)D ON A.OPT=D.OPT
ORDER BY A.OPT

Проверьте ответ в SQL Fiddle: SQL Fiddle

person DineshDB    schedule 11.12.2017