mmm.. EAVS... Poza oczywistymi sugestiami faktycznego wdrożenia projektu, możesz osiągnąć to, co chcesz:
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