同じ列を持つ2つのテーブルがあります。これらの2つのテーブルを、最初のテーブルのすべての行を含む3番目のテーブルに結合し、2番目のテーブルから同じ場所の最初のテーブルに存在しない日付を持つすべての行を結合したいと思います。
例:
トランザクション:
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
トランザクション2:
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;
ただし、日付は同じで場所が異なる行を含めたいということは考慮されていません。Postgresql9.2を使用しています。