Based on your sample query
select billdate from test ORDER BY YEAR(billdate),Month(billdate)
You are going to have to convert the column to a date to get the correct ordering. E.g.
select billdate
from test
ORDER BY DATEPART(MM,SUBSTRING(billdate,1,4) + SUBSTRING(billdate, 6,3) + '01')
This is a truly awful way to go about things - billdate should be a date or datetime column in which case you could do something like
select cast(DATEPART(YY,billdate) as varchar) + '_' + convert(char(3), datename(month, billdate))
from test
ORDER BY billdate
Which is also pretty awful.
What you should be doing is
select billdate from test order by billdate
and doing the formatting of the result in the presentation (UI) layer