Put a CASE expression in there, or convert it to int:
IsActive = MAX(CASE WHEN IsActive=1 THEN 1 ELSE 0 END)
or,
IsActive = MAX(CONVERT(int,IsActive))
You should also be aware, obviously, that this means that the values in the ProductName, VendorName and IsActive columns in the result set may all come from different rows in the base table.
If you want those three columns to actually all be from the same row (and assuming SQL Server 2005 or later), you’d do something like:
;With Numbered as (
SELECT *,ROW_NUMBER() OVER (
PARTITION BY ProductID,VendorID
ORDER BY /* Something appropriate, or if we just want random... */ newid()) as rn
FROM ProductVendorAssoc
)
select
ProductID,
VendorID,
ProductName,
VendorName,
IsActive
FROM Numbered where rn=1