Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 Вопрос про конкатенацию с использованием XmlAgg  [new]
Pastic
Member

Откуда: Москва
Сообщений: 1909
Есть подзапрос в разделе select запроса более выского уровня. В этом подзапросе нужно сконкатенировать строки, но перед конкатенацией нужно оставить только уникальные.
Я пытался сделать так:
select 
...
replace(replace(replace(replace(
           xmlElement("all", XMLAgg(xmlforest(
      (select
         unique ac.AGENT_CONTRACT_NUMBER
       from
         operdoc od,
         agent_contract ac
       where
             od.subject_id=act.subject_id
         and ac.agent_contract_id=od.agent_contract_id
      ) n))).getClobVal(),
             '</N><N>',','),'<all><N>'),'</N></all>'),'<all></all>')
      AGENT_CONTRACT_NUMBER
...
from ...
group by ...

но получал сообщение ORA-01427: подзапрос одиночной строки возвращает более одной строки

Oracle 10.
9 сен 13, 18:30    [14815852]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос про конкатенацию с использованием XmlAgg  [new]
Stepan_mk
Member

Откуда: Україна
Сообщений: 1299
Сдлеай что-то типа того
select 
...
replace(replace(replace(replace(
           xmlElement("all", XMLAgg(xmlforest(AGENT_CONTRACT_NUMBER ) n))).getClobVal(),
             '</N><N>',','),'<all><N>'),'</N></all>'),'<all></all>')
      AGENT_CONTRACT_NUMBER
...
from  (select
         unique ac.AGENT_CONTRACT_NUMBER
       from  operdoc od,  agent_contract ac
       where od.subject_id=act.subject_id
          and ac.agent_contract_id=od.agent_contract_id...)
group by ...
11 сен 13, 16:18    [14827178]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос про конкатенацию с использованием XmlAgg  [new]
Pastic
Member

Откуда: Москва
Сообщений: 1909
Stepan_mk, большое спасибо.
11 сен 13, 17:22    [14827635]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить