DECLARE @SourceTable TABLE(
Id int,
Name nvarchar(max),
Type nvarchar(max)
);
INSERT INTO @SourceTable (id, Name,Type) VALUES (1, 'Bob','Postive'), (2, 'Bob','Postive'), (3, 'Bob','Negative'),(4, 'Sally','Negative')
DECLARE @MostTable TABLE(
Name nvarchar(max),
Type nvarchar(max)
);
INSERT INTO @MostTable
SELECT Name,Type
FROM
(
SELECT ROW_NUMBER() OVER(PARTITION BY Name ORDER BY OccursCount DESC) as RankNo,* FROM
(
select Name,Type,Count(Type) as OccursCount from @SourceTable GROUP BY Name,Type
)OccursTable
)RankTable WHERE RankNo=1
UPDATE @SourceTable SET Type=MT.Type
FROM @SourceTable ST
INNER JOIN @MostTable MT ON ST.Name=MT.Name
SELECT * FROM @SourceTable