Where clause returns null, but need to return 0
I think you need a LEFT JOIN or an inline subquery. The FROM b is also missing.

For the NULL to be converted to 0, you need the equivalent of COALESCE() or ISNULL(), which is the Nz() function in Access:

SELECT a.partNumber,
       Nz( (SELECT SUM(b.purchased) 
            FROM b
            WHERE b.partID = a.partID
           ), 0) AS sum_purchased 
FROM a ;


Assuming that table's primary (or unique) key is partID, you can have the same results with a LEFT JOIN:

SELECT a.partNumber,
       Nz(SUM(b.purchased), 0) AS sum_purchased 
FROM a 
  LEFT JOIN b
    ON b.partID = a.partID
GROUP BY a.partID, a.partNumber ;