SELECT MasterID,
[Basic Phone] = MAX([Basic Phone]),
[Pixi] = MAX([Pixi]),
[Blackberry] = MAX([Blackberry])
FROM
(
SELECT MasterID, [Basic Phone],[Pixi],[Blackberry]
FROM dbo.Services AS s
PIVOT
(
MAX([Status]) FOR [Type] IN ([Basic Phone],[Blackberry],[Pixi])
) AS p
) AS x
GROUP BY MasterID;
Ou mais simplesmente - e crédito para @YS. por apontar minha redundância.
SELECT MasterID,
[Basic Phone],
[Pixi],
[Blackberry]
FROM
(
SELECT MasterID, Status, Type FROM dbo.Services
)
AS s
PIVOT
(
MAX([Status]) FOR [Type] IN ([Basic Phone], [Blackberry], [Pixi])
) AS p;