У меня есть 2 таблицы со схемой и данными ниже:
id sellable_id channel_id customer_fee subscription_fee currency_code posted_date company_id
1 333 123 10 5 usd 2024-03-27 5555
2 333 123 10 5 usd 2024-03-28 5555
3 333 123 10 5 usd 2024-03-29 5555
id sellable_id channel_id base_rate store_fee item_vol currency_code charge_date company_id
1 333 123 2 50 20 usd 2024-03-27 5555
2 222 123 2 52 20 usd 2024-03-28 5555
3 444 123 2 34 20 usd 2024-03-29 5555
Я хочу объединить эти две таблицы, чтобы окончательный результат выглядел следующим образом:
sellable_id channel_id customer_fee subscription_fee base_rate store_fee item_vol currency_code date company_id
333 123 10 5 0 0 0 usd 2024-03-27 5555
333 123 10 5 0 0 0 usd 2024-03-28 5555
333 123 10 5 0 0 0 usd 2024-03-29 5555
333 123 0 0 2 50 20 usd 2024-03-27 5555
222 123 0 0 2 52 20 usd 2024-03-28 5555
444 123 0 0 2 34 20 usd 2024-03-29 5555
более подробное объяснение:
Я попытался объединить их с помощью FULL OUTER JOIN, но результат оказался неправильным. Вот мой запрос
SELECT
rf.sellable_id,
rf.channel_id,
rf.company_id,
rf.customer_fee,
rf.subscription_fee,
af.sellable_id,
af.channel_id,
af.company_id,
af.base_rate,
af.store_fee,
af.item_vol
FROM
regular_fee rf
FULL OUTER JOIN
additional_fee af
ON rf.company_id = af.company_id
WHERE
AND rf.posted_date BETWEEN '2024-01-01' AND '2024-03-31'
AND af.charge_date BETWEEN '2024-01-01' AND '2024-03-31';
Результат будет таким:
где он автоматически заполняет значение col, если оно не существует, но я не хочу этого делать.
Понятно, обновил вопрос в текстовом формате.
Вы уверены, что указали правильный запрос?
Это запрос, который не дает желаемого результата. Дело в том, что предоставленный мной запрос будет автоматически заполнять поля числами, если доза col не существует, а это не то, что я хочу.
Пожалуйста, форматируйте свои данные в виде таблиц, а не кода, чтобы их можно было читать.
для желаемого результата вы можете сделать что-то вроде:
SELECT
sellable_id,
channel_id,
customer_fee,
subscription_fee,
0 AS base_rate,
0 AS store_fee,
0 AS item_vol,
currency_code,
posted_date AS date,
company_id
FROM
regular_fee
UNION ALL
SELECT
sellable_id,
channel_id,
0 AS customer_fee,
0 AS subscription_fee,
base_rate,
store_fee,
item_vol,
currency_code,
charge_date AS date,
company_id
FROM
additional_fee;
Пожалуйста, не используйте изображения, поскольку никто не сможет скопировать ваши данные, если захочет попробовать решение. Добавьте всю информацию в свой вопрос в виде редактируемого текста в соответствующем формате (например, данные в виде таблиц).