UNION
hanya tidak melakukan apa yang Anda gambarkan. Kueri ini harus:
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
untuk mengecualikan baris dari tabel kedua untuk lokasi dan tanggal yang sama. Lihat:
- Pilih baris yang tidak ada di tabel lain
Gunakan CREATE TABLE AS
alih-alih SELECT INTO
. Panduan:
CREATE TABLE AS
secara fungsional mirip denganSELECT INTO
.CREATE TABLE AS
adalah sintaks yang disarankan, karena bentukSELECT INTO
ini tidak tersedia di ECPG atau PL/pgSQL, karena mereka menafsirkanINTO
klausa secara berbeda. Selanjutnya,CREATE TABLE AS
menawarkan superset fungsionalitas yang disediakan olehSELECT INTO
.
Atau, jika tabel target sudah ada:
INSERT INTO transactions_combined (<list names of target column here!>)
SELECT ...
Selain:Saya tidak akan menggunakan date
sebagai nama kolom. Ini adalah kata yang dicadangkan di setiap standar SQL dan nama fungsi dan tipe data di Postgres.