ORDER BY Clause will return 1 1 1 1 2 2 3 3 3 4 10 ... not 1 1 1 1 10 2 2 3 3 3 4 .
I think your field type is not numeric type.
Select * from tblDetail order by convert(int, day)
If this solution not fulfill your requirement, give details and also table structure.