2016-10-10 3 views
0

В настоящее время я пытаюсь создать отчет с помощью SQL Developer.

У меня есть эти 2 таблицы:

PERSONS (IDPerson, NamePerson) PENALTIES (IDPenalty, DatePenalty, Description, IDPerson)

Таблицы polulated.Рекурсивные записи oracle

Как я мог бы создать таблицу, как

THIS

с помощью рекурсивных запросов в SQL? или это другое решение? Спасибо заранее.

+1

Я искушен, чтобы пометить это как дубликат [этот вопрос] (http://stackoverflow.com/questions/4686543/SQL-запрос к конкатенации-столбцы значений из-и множества строк-в-оракула). –

+0

Согласовано - почти точный дубликат. Другой вопрос не нуждался в объединении для получения «имени», связанного с идентификатором, но это отдельный и другой вопрос (по сравнению с вопросом о агрегации списка, который является основной темой). – mathguy

ответ

2
select p.nameperson as name, p.idperson as id, 
     listagg(to_date(x.datepenalty, 'dd/mm/yyyy') || ' - ' || x.description, '; ') 
             within group (order by x.datepenalty) as penalties 
from  persons p left outer join penalties x 
        on p.idperson = x.idperson 
group by p.idperson; 

(не проверено - вы не предоставили тестовые данные.)