Depende como quieran el reporte pero es perfectamente posible hacerlo vía código si lo generas en HTML / PDF/ Excel, solo es que veas que formato necesitas y primero intentes hacerlo en una tabla HTML.
Para agruparlo es simple, solo verificas por que campo quieres agrupar y lo ordenas por ese campo, luego al estar ciclando vas verificando, mientras siga siendo el campo por el que vas a agrupar imprimes, cuando cambie el campo, imprimes los encabezados nuevamente y continuas tu ciclo.
En pseudocodigo:
Código:
Mientras haya resultados:
- Verificas campo de agrupar
- Si es diferente:
- imprimes encabezados / division
- Imprimes resultados
Saludos.