Объедините две таблицы в новую, чтобы игнорировать выбранные строки из другой.
У меня есть две таблицы с одинаковыми столбцами. Я хотел бы объединить эти две таблицы в третью, которая содержит все строки из первой, а из второй - все строки, у которых есть дата, которая не существует в первой таблице для того же места.
Пример:
сделки:
date |location_code| product_code | quantity
------------+------------------+--------------+----------
2013-01-20 | ABC | 123 | -20
2013-01-23 | ABC | 123 | -13.158
2013-02-04 | BCD | 234 | -4.063
transactions2:
date |location_code| product_code | quantity
------------+------------------+--------------+----------
2013-01-20 | BDE | 123 | -30
2013-01-23 | DCF | 123 | -2
2013-02-05 | UXJ | 234 | -6
Желаемый результат:
date |location_code| product_code | quantity
------------+------------------+--------------+----------
2013-01-20 | ABC | 123 | -20
2013-01-23 | ABC | 123 | -13.158
2013-01-23 | DCF | 123 | -2
2013-02-04 | BCD | 234 | -4.063
2013-02-05 | UXJ | 234 | -6
Как бы я пошел по этому поводу? Я пробовал например это:
SELECT date, location_code, product_code, type, quantity, location_type, updated_at
,period_start_date, period_end_date
INTO transactions_combined
FROM ( SELECT * FROM transactions_kitchen k
UNION ALL
SELECT *
FROM transactions_admin h
WHERE h.date NOT IN (SELECT k.date FROM k)
) AS t;
но это не учитывает, что я хотел бы включить строки, которые имеют одинаковую дату, но разное местоположение. У меня есть Postgresql 9.2.