orig_system
имеет значение DNB
, и у них много owner_table_id
, связанных с DNB
. Я пытаюсь привести все идентификаторы из нескольких строк в одну строку.
Но 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
? - person mustaccio   schedule 23.08.2016row_number()
, и отложенная копия (когда вы можете сравнитьrn
иprior rn
с помощью простой арифметики), и почему у вас есть такой сложный способ извлечения только полного пути, когдаconnect_by_isleaf
служит точно эта цель. Или... игнорировать второй вопрос;connect_by_isleaf
- это Oracle 10, а ваше решение было для Oracle 9. Однако OP здесь находится на Oracle 10. - person mathguy   schedule 23.08.2016row_number()
, один текущий и один запаздывающий, вместо того, чтобы написать условие, как это сделал я. Какое это имеет отношение ко всему, что ты сказал? Кроме этого, после того, как я опубликовал, я увидел все указатели на старые решения и не нашел того, который придумал (ваш был ближе всего). Если вы можете указать мне, где предлагается решение, которое я предложил, я буду благодарен и сниму свой ответ. - person mathguy   schedule 24.08.2016connect_by_isleaf
был недоступен, и я думаю, что это большая разница, чем то, как используетсяrow_number()
). - person mathguy   schedule 24.08.2016