Как сделать запрос с коллекцией в операторе select (не в предложении where) - PullRequest
0 голосов
/ 08 апреля 2020

У меня есть 2 таблицы. Родительская таблица (parent) имеет отношение один-ко-многим к дочерней таблице. Родительская таблица (Pa_Projects_all) и дочерний pa_project_players. К ним присоединяется person_id

Допустим, у меня есть проект (project_id = 1001)

Project Id Project Name      
1001       This is a project 

У игроков проекта есть

enter image description here

В запросе должно быть что-то вроде этого

Select Project_Id, Person_id, Name
from Pa_projects_all a, Pa_project_players b
where a.person_id = b.person_id
and a.project_id = 1001;

Ожидаемый результат:

Project Id Person Id  Name
1001        500       John Smith
            501       Peter Carpenter
            502       Steve Sun

Где столбец Person Id и Name - это то, что, по моему мнению, должно быть коллекцией.

Запрос будет go в определении данных для XML Publisher, а результат будет в Excel.

Так в Excel столбец A = идентификатор проекта, столбец B = идентификатор лица, столбец C = имя. Одна строка в Excel для результата. другими словами, одна строка Excel на идентификатор проекта.

Возможно ли это?

1 Ответ

1 голос
/ 09 апреля 2020

Если вы хотите, чтобы этот отчет был в SQL* Plus, вы можете использовать оператор BREAK ON.

SQL> break on Project_Id
SQL> Select Project_Id, Person_id, Name
  2  from Pa_projects_all a, Pa_project_players b
  3  where a.person_id = b.person_id
  4  and a.project_id = 1001;

Если вы хотите, чтобы он был в любом инструменте, вы можете использовать аналитический Функция ROW_NUMBER выглядит следующим образом:

SELECT CASE WHEN RN = 1 THEN Project_Id END AS Project_Id, Person_id, Name FROM
(Select Project_Id, Person_id, Name,
       ROW_NUMBER() OVER (PARTITION BY Project_Id ORDER BY Person_id) AS RN
from Pa_projects_all a, Pa_project_players b
where a.person_id = b.person_id
and a.project_id = 1001)
ORDER BY RN;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...