Я боролся с этим уже несколько дней. Я не специалист по SQL, и мне удалось создать несколько запросов, однако у меня есть реальная работа по объединению запросов.
Например, я хочу объединить следующие два запроса:
SELECT publication_id AS Pure_Publication_Id, caa.person_id,
caa.name_first_name AS Primary_Author_First_Name,
caa.name_last_name AS Primary_Author_Last_Name
FROM pure.classified_author_assoc caa
LEFT OUTER JOIN Pure.Publication
ON Caa.Publication_Id = Publication.Id
WHERE Caa.Person_Id IS NOT NULL
AND publication.id IN
(
SELECT DISTINCT pure.publication_project_assoc.publication_id
FROM Pure.project
JOIN Pure.Publication_project_assoc
ON project.id = Pure.Publication_project_assoc.project_id
WHERE pure.project.source_id IN ('XEP378', 'XES049', 'YAH001')
)
GROUP BY publication_id, caa.person_id, caa.name_first_name, caa.name_last_name;
и
SELECT publication.id AS Pure_Publication_Id
COUNT (person_id) AS "NUMBER_OF_AUTHORS",
CASE WHEN COUNT (person_id) > 1 THEN 'Yes'
else 'No' END AS Additional_Authors
FROM pure.classified_author_assoc caa
LEFT OUTER JOIN Pure.Publication
ON Caa.Publication_Id = Publication.Id
WHERE Caa.Person_Id IS NOT NULL
AND publication.id IN
(
SELECT DISTINCT pure.publication_project_assoc.publication_id
FROM Pure.project
JOIN Pure.Publication_project_assoc
ON project.id = Pure.Publication_project_assoc.project_id
WHERE pure.project.source_id IN ('XEP378', 'XES049', 'YAH001')
)
GROUP BY publication.id;
Я не могу объединить их в одном запросе (я не думаю), так как первый запрос вернул бы Number_of_authors как единое целое. Однако, когда я пытаюсь выполнить запрос, в середине будет полное объединение, как показано ниже, я получаю ошибку SQL, которая не завершилась должным образом, в конце первого оператора SQL, и я не уверен, что соединение должно быть в конец.
SELECT publication_id AS Pure_Publication_Id, caa.person_id,
caa.name_first_name AS Primary_Author_First_Name,
caa.name_last_name AS Primary_Author_Last_Name
FROM pure.classified_author_assoc caa
LEFT OUTER JOIN Pure.Publication
ON Caa.Publication_Id = Publication.Id
WHERE Caa.Person_Id IS NOT NULL
AND publication.id IN
(
SELECT DISTINCT pure.publication_project_assoc.publication_id
FROM Pure.project
JOIN Pure.Publication_project_assoc
ON project.id = Pure.Publication_project_assoc.project_id
WHERE pure.project.source_id IN ('XEP378', 'XES049', 'YAH001')
)
GROUP BY publication_id, caa.person_id, caa.name_first_name, caa.name_last_name
FULL OUTER JOIN
(
SELECT publication.id AS Pure_Publication_Id,
COUNT (person_id) AS "NUMBER_OF_AUTHORS",
CASE WHEN COUNT (person_id) > 1 THEN 'Yes'
else 'No' END AS Additional_Authors
FROM pure.classified_author_assoc caa
LEFT OUTER JOIN Pure.Publication
ON Caa.Publication_Id = Publication.Id
WHERE Caa.Person_Id IS NOT NULL
AND publication.id IN
(
SELECT DISTINCT pure.publication_project_assoc.publication_id
FROM Pure.project
JOIN Pure.Publication_project_assoc
ON project.id = Pure.Publication_project_assoc.project_id
WHERE pure.project.source_id IN ('XEP378', 'XES049', 'YAH001')
)
)
GROUP BY publication.id
ON ****;
Я пробовал это всеми возможными способами и знаю, что это должно быть что-то простое. Кто-нибудь может помочь, пожалуйста?