Това може да работи:
SELECT a.ProductID, Hash1, Hash2
FROM (select ProductID, BINARY_CHECKSUM(*) AS Hash1 from TableA a) a
JOIN (select ProductID, BINARY_CHECKSUM(*) AS Hash1 from TableB b) b on ...
Вашият проблем е просто проблем със синтаксиса. Вашият подход ще работи.