A menos que haya una buena razón para asegurarse en el SQL que solo sean 3 registros por grupo, yo solamente me quedaría con el hecho de que los datos son así (según se observa en el ejemplo).
Para hacer un pivot siempre hay que usar una función de agregación, dado que nosotros sabemos que hay un registro de cada tipo, podemos usar indistintamente min() o max() para llenar ese requisito, con lo que esta consulta debiera devolver lo que buscas:
select * from (select idGestion, PeticionID, Field, Value from GestionSaliente ) t pivot (min(Value) for Field in (Type, SubType, Units) ) as pt;