If I'm reading your question right, you want to use a group by statement based on the category field of the table (or join table). You won't get a flat readout like you show, but you would get a row based output that way:
Date | Category | Count
xyz | Bikes | 233
xyz | Cars | 324
If you don't have a category field, add one to the table somehow for every product - that should make it work.
If you want Null (no data) fields to show up in your report, there are a few ways to do that. Off the top of my head maybe using "coalesce" to convert null to "0" would work (be careful as this can change averages etc). Sometimes a left/right or outer join will work and won't have the problem with summary data like coalesce.
Steve