Hola palavicini:
No estoy seguro de si entendí correctamente el problema, pero a ver si esto te sirve:
Código MySQL:
Ver originalQuery OK, 0 rows affected (0.05 sec)
mysql
> insert into Ceros_Unos
values (1,1,0,0,1,0),(1,1,0,0,1,0),(1,0,0,0,0,0),(1,1,1,0,1,1),(2,0,0,0,0,1),(2,0,1,0,0,0),(2,0,0,0,1,1),(3,1,0,0,0,0),(3,0,0,0,1,
1),(3,0,0,0,0,0);
Query OK, 10 rows affected (0.03 sec)
+--------------+------+------+------+------+------+
| CategoriaSEQ | D1 | D2 | D3 | D4 | D5 |
+--------------+------+------+------+------+------+
| 1 | 1 | 0 | 0 | 1 | 0 |
| 1 | 1 | 0 | 0 | 1 | 0 |
| 1 | 0 | 0 | 0 | 0 | 0 |
| 1 | 1 | 1 | 0 | 1 | 1 |
| 2 | 0 | 0 | 0 | 0 | 1 |
| 2 | 0 | 1 | 0 | 0 | 0 |
| 2 | 0 | 0 | 0 | 1 | 1 |
| 3 | 1 | 0 | 0 | 0 | 0 |
| 3 | 0 | 0 | 0 | 1 | 1 |
| 3 | 0 | 0 | 0 | 0 | 0 |
+--------------+------+------+------+------+------+
10 rows
in set (0.00 sec
)
-> sum(if(D1
= 0, 1, 0))+ -> sum(if(D2
= 0, 1, 0))+ -> sum(if(D3
= 0, 1, 0))+ -> sum(if(D4
= 0, 1, 0))+ -> sum(if(D5
= 0, 1, 0)) total_ceros
, -> sum(if(D1
= 1, 1, 0))+ -> sum(if(D2
= 1, 1, 0))+ -> sum(if(D3
= 1, 1, 0))+ -> sum(if(D4
= 1, 1, 0))+ -> sum(if(D5
= 1, 1, 0)) total_unos
+--------------+-------------+------------+
| CategoriaSEQ | total_ceros | total_unos |
+--------------+-------------+------------+
| 1 | 12 | 8 |
| 2 | 11 | 4 |
| 3 | 12 | 3 |
+--------------+-------------+------------+
En el ejemplo sólo pongo 5 columnas, si esto es lo que quieres tendrías que completar con los 31 campos.
En lo que respecta a la respuesta del compañero gnzsoloyo creo que se refiere a que lo hagas con algún lenguaje de programación o en su defecto desde la base de datos, pero utilizando procedimientos almacenados.
Saludos
Leo.