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

Откуда:
Сообщений: 38
Добрый день! Есть запрос:

select r.name, r.contract_num, r.contract_date,
to_char(a.date_payment_order, 'dd.mm.yyyy')||'''№'||a.number_payment_order as number_payment
from patyment a, cliens r
where a.date_payment_order between to_date('01.01.2011', 'dd.mm.yyyy')
and to_date('31.03.2011', 'dd.mm.yyyy')and a.id_client=r.id_firmy;

Который выводит следующую информацию

NAME CONTRACT_NUM CONTRACT_DATE NUMBER_PAYMENT
ЗАО "ОЗОН" П//02/08 01.01.2009 18.01.2011'№11
ОАО "НИИ ТП" бывш.ФГУП 08/78/400 01.01.2009 10.03.2011'№405
ОАО "НИИ ТП" бывш.ФГУП 08/78/400 01.01.2009 14.02.2011'№815
ООО "Акцент-Авто" 08/511/400 01.01.2009 17.03.2011'№50
ООО "Акцент-Авто" 08/511/400 01.01.2009 29.03.2011'№61
ООО "Акцент-Авто" 08/511/400 01.01.2009 22.03.2011'№51
ООО "Акцент-Авто" 08/511/400 01.01.2009 04.03.2011'№43




Необходимо модифицировать запрос так, чтобы объединить записи поля NUMBER_PAYMENT в одну запись через запятую и сгруппировать по каждому контрагенту.

Подскажите пожалуйста вариант реализации.
5 авг 11, 11:19    [11075053]     Ответить | Цитировать Сообщить модератору
 Re: PL/SQL - объеденить записи  [new]
LexMinsk
Member

Откуда: Republic of Belarus
Сообщений: 451
SYS_CONNECT_BY_PATH
5 авг 11, 11:24    [11075098]     Ответить | Цитировать Сообщить модератору
 Re: PL/SQL - объеденить записи  [new]
-2-
Member

Откуда:
Сообщений: 15330
LexMinsk
SYS_CONNECT_BY_PATH
зачем сложности, у автора в заголовке PL/SQL
5 авг 11, 11:30    [11075174]     Ответить | Цитировать Сообщить модератору
 Re: PL/SQL - объеденить записи  [new]
LexMinsk
Member

Откуда: Republic of Belarus
Сообщений: 451
Тогда, курсор ему в помощь.
5 авг 11, 11:40    [11075278]     Ответить | Цитировать Сообщить модератору
 Re: PL/SQL - объеденить записи  [new]
LAU31
Member

Откуда:
Сообщений: 38
Спасибо за ответы.
Можно немного подробнее вариатнт с курсором
5 авг 11, 11:46    [11075324]     Ответить | Цитировать Сообщить модератору
 Re: PL/SQL - объеденить записи  [new]
LexMinsk
Member

Откуда: Republic of Belarus
Сообщений: 451
LAU31
Спасибо за ответы.
Можно немного подробнее вариатнт с курсором

Делаешь курсор по вышеприведенному тобой запросу и в цикле формируешь запись со сложенной как надо строкой.
далее эту строку заносишь либо во временную таблицу либо во вложенную, а после цикла из нее селектишь результат.
5 авг 11, 11:50    [11075368]     Ответить | Цитировать Сообщить модератору
 Re: PL/SQL - объеденить записи  [new]
MW
Member

Откуда: Москва
Сообщений: 490
LAU31
... объединить записи поля NUMBER_PAYMENT в одну запись через запятую и сгруппировать по каждому контрагенту.
А просто агрегатная функция stragg не устроит?
5 авг 11, 11:56    [11075430]     Ответить | Цитировать Сообщить модератору
 Re: PL/SQL - объеденить записи  [new]
LAU31
Member

Откуда:
Сообщений: 38
MW
LAU31
... объединить записи поля NUMBER_PAYMENT в одну запись через запятую и сгруппировать по каждому контрагенту.
А просто агрегатная функция stragg не устроит?


Вполене устроила, большое спасибо за ответ!
5 авг 11, 14:30    [11076642]     Ответить | Цитировать Сообщить модератору
 Re: PL/SQL - объеденить записи  [new]
Ramin Hashimzade
Member

Откуда: Азербайджан, Баку
Сообщений: 9979
Блог
LAU31
MW
пропущено...
А просто агрегатная функция stragg не устроит?


Вполене устроила, большое спасибо за ответ!


есть ограничение на агр функции типа как wm_concat , если обьем большой нужно будет писать свой.
5 авг 11, 15:40    [11077200]     Ответить | Цитировать Сообщить модератору
 Re: PL/SQL - объеденить записи  [new]
LAU31
Member

Откуда:
Сообщений: 38
Ramin,

что за ограничения, можно подробней?
5 авг 11, 18:16    [11078387]     Ответить | Цитировать Сообщить модератору
 Re: PL/SQL - объеденить записи  [new]
Ramin Hashimzade
Member

Откуда: Азербайджан, Баку
Сообщений: 9979
Блог
LAU31
Ramin,

что за ограничения, можно подробней?

ограничение на кол. символов. Но в 11 версии этот LISTAGG как себя ведет не могу сказать , но если 10-ка и обьем большой то лучще писать свой.
6 авг 11, 09:28    [11079954]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить