Таблицы соединения Postgres SQL

Вопрос

У меня есть 2 таблицы со схемой и данными ниже:

таблица Regular_fee

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, если оно не существует, но я не хочу этого делать.

Пожалуйста, не используйте изображения, поскольку никто не сможет скопировать ваши данные, если захочет попробовать решение. Добавьте всю информацию в свой вопрос в виде редактируемого текста в соответствующем формате (например, данные в виде таблиц).

NickW 26.06.2024 07:08

Понятно, обновил вопрос в текстовом формате.

DawnZHANG 26.06.2024 07:14

Вы уверены, что указали правильный запрос?

hassaan mustafa 26.06.2024 07:26

Это запрос, который не дает желаемого результата. Дело в том, что предоставленный мной запрос будет автоматически заполнять поля числами, если доза col не существует, а это не то, что я хочу.

DawnZHANG 26.06.2024 07:33

Пожалуйста, форматируйте свои данные в виде таблиц, а не кода, чтобы их можно было читать.

NickW 26.06.2024 09:36
ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
3
5
53
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

для желаемого результата вы можете сделать что-то вроде:

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;

Другие вопросы по теме

Похожие вопросы

Как рассчитать скользящую сумму для группы данных
Запрос данных SEDE для поиска сообщений со скрытыми комментариями, добавленными мной
PL/SQL в Superset/Trino – преобразование шестнадцатеричной функции
Проверка последовательных дней в SQL
Выполнение различных функций агрегирования для разных строк выходных данных, возвращаемых предложением group by
Получите значения столбцов A таблицы 1 и значений столбца B таблицы 2 с тем же идентификатором
Как выбрать следующее наименьшее значение и следующее наибольшее значение из определенного значения записи, которое было помечено?
Хранимая процедура: добавьте параметр для месяца или часа
Как эффективно самостоятельно присоединиться к одной и той же таблице несколько раз с порядком сортировки по возрастанию и убыванию?
Запретить SQL сопоставлять конечные пробелы и вместо этого явно сопоставлять условие