mmm.. EAVS... Au-delà des suggestions évidentes de mise en œuvre d'un design, vous pouvez obtenir ce que vous voulez comme suit :
Select Min( Case When name = 'fname' Then value End ) As fname
, Min( Case When name = 'lname' Then value End ) As lname
, Min( Case When name = 'city' Then value End ) As city
From MyTable
Group By Id