#informatica #lookup-tables
Вопрос:
У меня есть один src и 2 lkps. Во втором lkp я хочу использовать переопределение lkp.Во втором lkp мне нужно объединить три таблицы.
sql-запрос
SELECT IPF.ID,listagg(country_name,',') within group(order by(id)) FROM Table1 RG INNER JOIN table2 IPF ON RG.ID=IPF.ID INNER JOIN table3 DR ON DR.SDL_ID=RG.SDL_ID group by id;
Ответ №1:
Вы можете использовать перезапись sql. Но вам нужно создать псевдонимы столбцов и посмотреть, работает ли ваш запрос в базе данных. Sql, который вы опубликовали, похоже, имеет неправильную группу, поэтому сначала убедитесь, что он работает. Sql должен быть
SELECT IPF.ID as id,listagg(country_name,',') within group(order by(id)) aggcntrname FROM Table1 RG INNER JOIN table2 IPF ON RG.ID=IPF.ID INNER JOIN table3 DR ON DR.SDL_ID=RG.SDL_ID group by id, sdl_id, country_name Order by 1 --
В вашем поиске должно быть 2 порта lookup и порты соединения.
in_id --input id -- lkp port aggcntrname --lkp and return port length 4000.
Условия присоединения будут указаны на id = in_id. Иногда список agg создает более 4000 строк символов и вызывает сбой. Будь осторожен с этим.
Комментарии:
1. ВЫБЕРИТЕ IPF. ИДЕНТИФИКАТОР,список(имя_страны,’,’) внутри группы(порядок по(идентификатору)) асконтрийное имя ИЗ таблицы 1 RG ВНУТРЕННЕЕ СОЕДИНЕНИЕ С таблицей 2 IPF НА RG.ID=IPF. ИДЕНТИФИКАТОР ВНУТРЕННЕГО СОЕДИНЕНИЯ table3 DR В группе DR. SDL_ID=RG.SDL_ID по идентификатору; Он отлично работает в бд.
2. я изменил ответ в соответствии с вашим комментарием.