UPDATE dummy
SET customer = subquery.customer,
supplier = subquery.supplier,
partner = subquery.partner
FROM (SELECT address_id,
CASE WHEN cust.addr1 IS NOT NULL THEN TRUE ELSE FALSE
END
AS customer,
CASE WHEN suppl.addr1 IS NOT NULL THEN TRUE ELSE FALSE
END
AS supplier,
CASE WHEN partn.addr1 IS NOT NULL THEN TRUE ELSE FALSE
END
AS partner
FROM address AS pa
LEFT OUTER JOIN cust_original AS cust
ON (pa.addr1 = cust.addr1 AND pa.addr2 = cust.addr2 AND pa.city = cust.city
AND pa.state = cust.state AND CAST(cust.zip AS VARCHAR(5)) = CAST(pa.zip AS VARCHAR(5)))
LEFT OUTER JOIN supp_original AS suppl
ON (pa.addr1 = suppl.addr1 AND pa.addr2 = suppl.addr2 AND pa.city = suppl.city
AND pa.state = suppl.state AND CAST(pa.zip AS VARCHAR(5)) = CAST(CAST(suppl.zip AS VARCHAR(25)) AS VARCHAR(5)))
LEFT OUTER JOIN partner_original AS partn
ON (pa.addr1 = partn.addr1 AND pa.addr2 = partn.addr2 AND pa.city = partn.city
AND pa.state = partn.state AND CAST(pa.zip AS VARCHAR(5)) = CAST(CAST(partn.zip AS VARCHAR(25)) AS VARCHAR(5)))) AS subquery
WHERE dummy.address_id = subquery.address_id;