Потому что вы делаете select *
наверху.
user_id
firstname
lastname
DEPARTMENT
присутствуют в обоих подзапросах, и с select *
он получит два столбца с одинаковыми именами.
Если вы хотите объединить два подзапроса (так, чтобы результирующий набор столбцов был user_id, firstname, lastname, DEPARTMENT, jc_name, ug_name
), вы должны выполнить естественное объединение :
SELECT *
FROM (SELECT aods.user_id, aods.firstname, aods.lastname, aods.department,
cods.jc_name
FROM personas aods LEFT JOIN user_jc cods
ON aods.user_id = cods.user_id
WHERE cods.jc_name LIKE '%ADM%') ods
NATURAL JOIN
(SELECT abl.user_id, abl.firstname, abl.lastname, abl.department,
bbl.ug_name
FROM personas abl LEFT JOIN ru_ug bbl ON abl.user_id = bbl.user_id
WHERE bbl.ug_name LIKE '%ADM%' AND bbl.rss_name = 'TIR') bl
Вместо этого, если вам нужны все разные столбцы, вы должны явно перечислить их:
SELECT ods.user_id, ods.firstname, ods.lastname, ods.department, ods.jc_name,
bl.user_id, bl.firstname, bl.lastname, bl.department, bl.ug_name
FROM (SELECT aods.user_id, aods.firstname, aods.lastname, aods.department,
cods.jc_name
FROM personas aods LEFT JOIN user_jc cods
ON aods.user_id = cods.user_id
WHERE cods.jc_name LIKE '%ADM%') ods
FULL OUTER JOIN
(SELECT abl.user_id, abl.firstname, abl.lastname, abl.department,
bbl.ug_name
FROM personas abl LEFT JOIN ru_ug bbl ON abl.user_id = bbl.user_id
WHERE bbl.ug_name LIKE '%ADM%' AND bbl.rss_name = 'TIR') bl
ON ods.user_id = bl.user_id
В своем комментарии вы говорите, что хотите использовать nvl()
для каждого столбца с внешним соединением. У меня все отлично работает:
SELECT NVL (ods.user_id, bl.user_id), NVL (ods.firstname, bl.firstname),
NVL (ods.lastname, bl.lastname), NVL (ods.department, bl.department),
ods.jc_name, bl.ug_name
FROM (SELECT '1' user_id, 'ods2' firstname, NULL lastname,
'ods3' department, 'ods4' jc_name
FROM DUAL) ods
FULL OUTER JOIN
(SELECT '1' user_id, NULL firstname, 'bl2' lastname, 'bl3' department,
'bl4' ug_name
FROM DUAL) bl ON ods.user_id = bl.user_id
Вы делаете какие-то дополнительные вещи, такие как order by
?