it is duplicated because DISTINCT refers to the whole set of columns, not only to Sp_Name. Also your query is not standard SQL but it will only work on MySql. In case that SP_Name is duplicated, which player id do you want to get? SP_50097, SP_50099, ... or SP_50100 ?
–
fthiellaJun 20 '13 at 9:59

The DISTINCT keyword applies to the complete row in the result set. MySQL will not remove arbitrary rows for you (well, not at least in this case).
–
Álvaro G. VicarioJun 20 '13 at 10:00

You are not getting a duplicate "001 Towing", the distinct is applied to each group generated by the group by clause. Therefore, you get 4 x "001 Towing" one for each "Sp_Id"; if you remove the group by, you will get only one "001 Towing".

You made the wrong question to the database, and the database gave you the right answer to your wrong question. If you tell us what the query is supposed to do, we might be able to help you fix it...