Как создать запрос для получения многострочных данных в формате с разделителями-запятыми в одной строке в Oracle - PullRequest
0 голосов
/ 08 мая 2019

У меня есть требование, где у меня есть столбец «NOTECODE» в таблице базы данных POLICY, который содержит несколько кодов примечаний в формате через запятую например: CC, TD, HL

ПОЛИТИКА:

 POLICYNO  | NOTECODE
 ----------|----------
 ABC001    | CC,TD,HL
 ----------|----------
 ABC002    | CC,TD

ТАКЖЕ есть таблица CODEDESC, которая содержит описание, приведенное ниже

 CODE  | DESCRIPTION
 ------|----------
 CC    | Credit Card Payment
 ------|----------
 TD    | Yee
 ------|--------------
 HL    |Hospital Credit (Letter)

Я хочу получить данные, используя запрос, который дает POLICYNO, NOTECODE и DESCRIPTION, как указано ниже:

 POLICYNO  | NOTECODE   | DESCRIPTION
 ----------|----------  |----------
 ABC001    | CC,TD,HL   | Credit Card Payment, Yee, Hospital Credit (Letter)
 ----------|----------  |----------
 ABC002    | CC,TD      | Credit Card Payment, Yee  

Пожалуйста, кто-нибудь может помочь, как я могу это сделать.

1 Ответ

1 голос
/ 08 мая 2019

Вы можете использовать JOIN и агрегацию:

select p.policyno, p.notecode,
       listagg(description, ', ') within group (order by instr(p.notecode, cd.code))
from policy p left join
     codedesc cd
     on ',' || p.notecode || ',' like '%,' || cd.code || ',%'
group by p.policyno, p.notecode;

Обратите внимание, что это не эффективно! Это обходной путь, потому что вы застряли с очень плохой моделью данных. Ваши усилия должны быть направлены на исправление модели данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...