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