UNION 単にあなたが説明することをしません。このクエリは次のようになります:
CREATE TABLE AS
SELECT date, location_code, product_code, quantity
FROM transactions_kitchen k
UNION ALL
SELECT h.date, h.location_code, h.product_code, h.quantity
FROM transactions_admin h
LEFT JOIN transactions_kitchen k USING (location_code, date)
WHERE k.location_code IS NULL;
LEFT JOIN / IS NULL 同じ場所と日付の2番目のテーブルから行を除外します。参照:
- 他のテーブルに存在しない行を選択します
CREATE TABLE ASを使用します SELECT INTOの代わりに 。マニュアル:
CREATE TABLE AS機能的にはSELECT INTOに似ています 。CREATE TABLE ASこの形式のSELECT INTOは、推奨される構文です。INTOを解釈するため、ECPGまたはPL/pgSQLでは使用できません。 別の節。さらに、CREATE TABLE ASSELECT INTOによって提供される機能のスーパーセットを提供します 。
または、ターゲットテーブルがすでに存在する場合:
INSERT INTO transactions_combined (<list names of target column here!>)
SELECT ...
余談ですが、dateは使用しません 列名として。これは、すべてのSQL標準で予約語であり、Postgresでは関数とデータ型の名前です。