Я хочу объединить / объединить две таблицы с первичным ключом, категорией и оценкой таким образом, чтобы в результатах были показаны первичный ключ и все категории и оценки, присутствующие в обеих таблицах вместе, и, если данные заданы Категория находится только в одной таблице, затем с нулем для оценки из второй таблицы.
Таблицы следующие:
opinion_1
fruit category score
apple color 15
apple sweet 50
apple scent 35
orange color 40
orange sweet 60
opinion_2
fruit category score
apple color 28
apple sweet 12
orange color 29
orange sweet 50
orange scent 31
Я пробовал полное внешнее соединение и двойное левое соединение с объединением, получая те же результаты с неправильно умноженными категориями.
WITH opinion_1 AS (
SELECT 'apple' as fruit, 'color' as category, 15 as score UNION ALL
SELECT 'apple', 'sweet', 50 UNION ALL
SELECT 'apple', 'scent', 35 UNION ALL
SELECT 'orange', 'color', 40 UNION ALL
SELECT 'orange', 'sweet', 60
), opinion_2 AS (
SELECT 'apple' as fruit, 'color' as category, 28 as score UNION ALL
SELECT 'apple', 'sweet', 12 UNION ALL
SELECT 'orange', 'color', 29 UNION ALL
SELECT 'orange', 'sweet', 50 UNION ALL
SELECT 'orange', 'scent', 31
)
SELECT
opinion_1.fruit,
opinion_1.category as category,
opinion_1.score as score1,
opinion_2.score as score2
FROM opinion_1
full outer join opinion_2
on opinion_1.fruit = opinion_2.fruit
Ожидаю следующий результат операции:
fruit category score1 score2
apple color 15 28
apple sweet 50 12
apple scent 35 null
orange color 40 29
orange sweet 60 50
orange scent null 31
но я получаю это:
fruit category score1 score2
apple color 15 12
apple color 15 28
apple sweet 50 12
apple sweet 50 28
apple scent 35 12
apple scent 35 28
orange color 40 50
orange color 40 31
orange color 40 29
orange sweet 60 50
orange sweet 60 31
orange sweet 60 29