Ver Mensaje Individual
  #4 (permalink)  
Antiguo 16/03/2011, 12:31
leonardo_josue
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 4 meses
Puntos: 447
Respuesta: Ayuda con Select count complejo

Hola palavicini:

No estoy seguro de si entendí correctamente el problema, pero a ver si esto te sirve:

Código MySQL:
Ver original
  1. mysql> create table Ceros_Unos (CategoriaSEQ int, D1 int, D2 int, D3 int, D4 int
  2. , D5 int);
  3. Query OK, 0 rows affected (0.05 sec)
  4.  
  5. mysql> insert into Ceros_Unos values (1,1,0,0,1,0),(1,1,0,0,1,0),(1,0,0,0,0,0),(
  6. 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,
  7. 1),(3,0,0,0,0,0);
  8. Query OK, 10 rows affected (0.03 sec)
  9. Records: 10  Duplicates: 0  Warnings: 0
  10.  
  11. mysql> select * from Ceros_Unos;
  12. +--------------+------+------+------+------+------+
  13. | CategoriaSEQ | D1   | D2   | D3   | D4   | D5   |
  14. +--------------+------+------+------+------+------+
  15. |            1 |    1 |    0 |    0 |    1 |    0 |
  16. |            1 |    1 |    0 |    0 |    1 |    0 |
  17. |            1 |    0 |    0 |    0 |    0 |    0 |
  18. |            1 |    1 |    1 |    0 |    1 |    1 |
  19. |            2 |    0 |    0 |    0 |    0 |    1 |
  20. |            2 |    0 |    1 |    0 |    0 |    0 |
  21. |            2 |    0 |    0 |    0 |    1 |    1 |
  22. |            3 |    1 |    0 |    0 |    0 |    0 |
  23. |            3 |    0 |    0 |    0 |    1 |    1 |
  24. |            3 |    0 |    0 |    0 |    0 |    0 |
  25. +--------------+------+------+------+------+------+
  26. 10 rows in set (0.00 sec)
  27.  
  28. mysql> select CategoriaSEQ,
  29.     -> sum(if(D1 = 0, 1, 0))+
  30.     -> sum(if(D2 = 0, 1, 0))+
  31.     -> sum(if(D3 = 0, 1, 0))+
  32.     -> sum(if(D4 = 0, 1, 0))+
  33.     -> sum(if(D5 = 0, 1, 0)) total_ceros,
  34.     -> sum(if(D1 = 1, 1, 0))+
  35.     -> sum(if(D2 = 1, 1, 0))+
  36.     -> sum(if(D3 = 1, 1, 0))+
  37.     -> sum(if(D4 = 1, 1, 0))+
  38.     -> sum(if(D5 = 1, 1, 0)) total_unos
  39.     -> from Ceros_unos
  40.     -> group by CategoriaSEQ;
  41. +--------------+-------------+------------+
  42. | CategoriaSEQ | total_ceros | total_unos |
  43. +--------------+-------------+------------+
  44. |            1 |          12 |          8 |
  45. |            2 |          11 |          4 |
  46. |            3 |          12 |          3 |
  47. +--------------+-------------+------------+
  48. 3 rows in set (0.00 sec)

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.