With tab
as
(
SELECT * FROM (VALUES
(1,'Mario',10,5)
,('2','Mario','9','4')
,('3','Mario','3','1')
,('4','Luca','2','1')
,('5','Luca','1','1')
,('6','Luca','3','2')
,('7','Giorgio','5','4')
,('8','Giorgio','6','2')
,('9','Giorgio','7','6')
,('10','Daniele','11','8')
,('11','Daniele','4','2')
,('12','Daniele','8','7')
,('13','Daniele','12','5')
) AS V([ID_Tab],[FName],[Value],[StepValue])
)
    SELECT DISTINCT tab.[FName],B.* FROM tab
    CROSS APPLY 
    (
        SELECT TOP(1) * FROM tab tab_all
         WHERE tab_all.FName = tab.FName
      ORDER BY Value
    ) B
ORDER BY B.Value