Сглаживание столбцов в отношении «один ко многим» в Oracle 10g

Я предполагаю, что это вопрос того, какую команду oracle использовать, но после пары часов поиска в Google я не нашел ничего, что могло бы делать то, что мне нужно . Итак, вот что мне нужно вкратце:

  Table 1                   Table 2
|  PrjID   |       |  PrjID   |  UserID  |  
|----------|       |----------|----------|  
| Project1 |       | Project1 |  User1   |  
| Project2 |       | Project1 |  User2   |  
| Project3 |       | Project1 |  User3   |  
| Project4 |       | Project2 |  User2   |  
| Project5 |       | Project3 |  User5   |  

Мне нужно сгенерировать SQL-запрос, чтобы с двумя приведенными выше таблицами я мог сгенерировать результат, который выглядит следующим образом:

|  PrjID   |      UserIDs      |  
|----------|-------------------|  
| Project1 | User1,User2,User3 |  
| Project2 | User2             |  
| Project3 | User5             |  

Первое, что я подумал попробовать был оператором соединения, но, как я уверен, многие из вас знают, это даст результат с несколькими строками для каждого проекта. Я также наткнулся на несколько руководств по сводным точкам, но это действительно для того, чтобы просто повернуть ваш результат на бок, а не для фактического агрегирования строковых значений строки. Я все еще новичок в более продвинутых частях SQL, так что вполне возможно, что я Я просто гуглил неправильные вещи, чтобы понять, как это сделать. Я, вероятно, смогу собрать решение на Java (это часть веб-приложения), которое будет просто перебирать строки и вытаскивать каждого пользователя, но мне бы очень хотелось узнать, как заставить SQL выполнять эту часть за меня.

Любая предложенная помощь будет очень признательна!

1
задан OMG Ponies 25 October 2010 в 01:00
поделиться