Hi Dinesh,
Here it is :
select * from (
SELECT *, DATEPART(MONTH, dwtdate) month , rank() over (partition by DATEPART(MONTH, dwtdate) order by freightrate desc) Ranking
FROM Freight
) marshaled where Ranking <= 4
order by month, ranking
To read more about ranking functions :
http://msdn.microsoft.com/en-us/library/ms189798.aspx[
^]
And remember that I supposed that all of your data is at the same year. So consider to change it and adapt it to your needs.
Also I named your table Freight so remember to change it too.
Good Luck