A GROUP BY clause "collapses" a range of rows into a single row with identical values - and you can only return those identical values directly - all other columns from the group of rows can only be returned as an aggregate value - the SUM, the AVERAGE, and so on.
So if you have three rows
ID Date Sales
1 2016-01-02 100
2 2016-01-02 200
3 2016-01-02 300
4 2016-01-03 400
5 2016-01-03 500
6 2016-01-03 600
And you GROUP BY Date, then you can't return the Sales value directly because SQL doesn't know which row value to return:
SELECT Date, Sales FROM MyTable GROUP BY Date
Date Sales
2016-01-02 ??? Should this be 100, 200, or 300?
2016-01-03 ??? Should this be 400, 500, or 600?
You can return an aggregate value though:
SELECT Date, SUM(Sales) FROM MyTable GROUP BY Date
Date Sales
2016-01-02 600
2016-01-03 1500
You are trying to return values which aren't necessarily a single row value because you GROUP BY BillNo so SQL complains.
You need to work out exactly what your data looks like, and what you need to return - and we can;t help you with that, because we have no idea what your data is, much less what you want to select!