miguelangel23,
aquí sólo podremos ayudarte en la parte de la consulta que, por lo que veo, tiene una estructura jerárquica.
Como, por lo que veo, vas a ir mostrando nivel a nivel, una consulta con auto-join te servirá.
Te pongo un enlace con ejemplos
http://dev.mysql.com/tech-resources/...ical-data.html
Pero te daré alguna pista:
si quieres el primer nivel te bastará con esto:
SELECT Nº, GASTO FROM tutabla WHERE filiacion IS NULL
Para el segundo nivel tienes que hacer auto-join. Imagina que quieres sacar los subtipos de Servicios, es decir, el segundo nivel.
Con esto, creo, encontrarías los servicios:
SELECT t2.Nº, t2.GASTO FROM tutabla t1 INNER JOIN tutabla t2 ON t1.Nº = t2.filiacion WHERE t2.filiacion = 1;
Con esto, los servicios públicos:
SELECT t2.Nº, t2.GASTO FROM tutabla t1 INNER JOIN tutabla t2 ON t1.Nº = t2.filiacion WHERE t2.filiacion = 2;
Se trata simplemente de esto. Lo otro, lo de los selectores, la parte dinámica ajena a las consulta SQL, debes preguntarla en el foro PHP.
Donde te he puesto los números pondrás las variables recogidas mediante los selectores, claro.
No he probado nada.