SELECT
qcl.item_code AS qcl_item_code,
fbsc.item_code AS fbsc_item_code,
scl.item_code AS scl_item_code,
scl.cpc_code AS scl_cpc_code,
COALESCE(fbsc.fao_item, qcl.fao_item, scl.fao_item) AS fao_item,
qcl.fao_item IS NOT NULL AS qcl,
fbsc.fao_item IS NOT NULL AS fbsc,
scl.fao_item IS NOT NULL AS scl,
qcl.item_description AS qcl_description,
fbsc.item_description AS fbsc_description,
scl.item_description AS scl_description,
FROM (
SELECT DISTINCT item_code, fao_item, item_description
FROM read_parquet('https://owid-catalog.nyc3.digitaloceanspaces.com/garden/faostat/2022-05-17/faostat_fbsc/faostat_fbsc.parquet')
) AS fbsc
FULL JOIN (
SELECT DISTINCT item_code, fao_item, item_description
FROM read_parquet('https://owid-catalog.nyc3.digitaloceanspaces.com/garden/faostat/2022-05-17/faostat_qcl/faostat_qcl.parquet')
) AS qcl ON qcl.fao_item = fbsc.fao_item
FULL JOIN (
SELECT DISTINCT
scl_item_codes.item_code::string AS item_code,
scl.item_code as cpc_code,
fao_item,
COALESCE(NULLIF(item_description, ''), scl_item_codes.description) AS item_description
FROM read_parquet('https://owid-catalog.nyc3.digitaloceanspaces.com/garden/faostat/2022-05-17/faostat_scl/faostat_scl.parquet') AS scl
-- NOTE: We have to join `scl_item_codes` because the original table uses CPC codes.
LEFT JOIN scl_item_codes
ON scl_item_codes.cpc_code = scl.item_code
) AS scl ON scl.fao_item = fbsc.fao_item OR scl.fao_item = qcl.fao_item
ORDER BY fao_item ASC