SQL

FULL OUTER JOIN / CROSS JOIN

admin by @admin ADMIN
2d ago
May 31, 2026
Public
0 0 up · 0 down Sign in to vote
`FULL OUTER` keeps unmatched rows from BOTH sides. `CROSS JOIN` is the Cartesian product — every row of A paired with every row of B. Rare but useful for date-spine and matrix generation.
SQL
Raw
-- FULL OUTER — total reconciliation between two source systems
SELECT
    COALESCE(a.id, b.id) AS id,
    a.name AS name_in_a,
    b.name AS name_in_b
FROM   import_source_a a
FULL   OUTER JOIN import_source_b b ON a.id = b.id
WHERE  a.name IS DISTINCT FROM b.name;   -- show only mismatches

-- CROSS JOIN — every region × every product
SELECT r.region, p.product, COALESCE(SUM(s.amount), 0) AS revenue
FROM   regions r
CROSS  JOIN products p
LEFT   JOIN sales s
       ON s.region = r.region AND s.product = p.product
GROUP  BY r.region, p.product
ORDER  BY r.region, p.product;
-- Without CROSS JOIN, region/product combos with zero sales would be missing.

-- Generate a date spine (PostgreSQL)
SELECT d::date AS day
FROM   generate_series('2025-01-01'::date, '2025-01-31'::date, INTERVAL '1 day') AS d;
Tags

Save your own code snippets

Create a free account and build your private vault. Share publicly whenever you want.