Ir al contenido


Foto

Consulta con resultado por Meses


  • Por favor identifícate para responder
5 respuestas en este tema

#1 enecumene

enecumene

    Webmaster

  • Administrador
  • 7.419 mensajes
  • LocationRepública Dominicana

Escrito 14 enero 2009 - 10:34

Hola amigos, necesito con esta consulta, quiero obtener la suma de los montos por meses en una sóla consulta, esta es la tabla:



sql
  1. CREATE TABLE `ctas_gral` (
  2.   `reg` INT(11) NOT NULL AUTO_INCREMENT,
  3.   `cuentaID` INT(11) NOT NULL,
  4.   `cuenta` VARCHAR(75) COLLATE utf8_bin NOT NULL,
  5.   `Monto` DOUBLE NOT NULL,
  6.   `fecha_reg` DATE NOT NULL,
  7.   `Tipo_cta` VARCHAR(20) COLLATE utf8_bin NOT NULL,
  8.   PRIMARY KEY  (`reg`)
  9. ) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_bin AUTO_INCREMENT=9 ;



Saludos.

  • 0

#2 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.448 mensajes
  • LocationMéxico

Escrito 14 enero 2009 - 11:17

Y si pruebas con esto:



sql
  1. SELECT EXTRACT(MONTH FROM fecha_reg) AS mes, SUM(monto) AS total FROM ctas_gral
  2. GROUP BY mes



Salud OS
  • 0

#3 Delphius

Delphius

    Advanced Member

  • Administrador
  • 6.295 mensajes
  • LocationArgentina

Escrito 14 enero 2009 - 11:20

Hola Fernando,
Desconozco MySQL, al menos en Firebird existe la función EXTRACT que permite, entre varias cosas, el mes de una fecha dada.
Una SQL en Firebird que sirve es ésta:



sql
  1. SELECT SUM(CANTIDAD) AS Total, EXTRACT (MONTH FROM FECHA) AS MES
  2. FROM TABLA1
  3. GROUP BY 2



Creo que lo que buscas es algo similar. Como he dicho: desconozco MYSQL, pero debe tener una función o algo por estilo para extraer el mes, dia, año de una fecha.

Saludos,
  • 0

#4 enecumene

enecumene

    Webmaster

  • Administrador
  • 7.419 mensajes
  • LocationRepública Dominicana

Escrito 14 enero 2009 - 11:21

Gracias Eliseo ahora mismo lo pruebo, esto era lo que estaba haciendo :s:


sql
  1. SELECT SUM(Monto) AS TOTAL, fecha_reg,
  2. CASE WHEN fecha_reg
  3. BETWEEN 2009-01-01
  4. AND 2009-02-01
  5. THEN TOTAL
  6. ELSE 0000-00-00
  7. END AS Enero,
  8. CASE WHEN fecha_reg
  9. BETWEEN 2009-02-01
  10. AND 2009-03-01
  11. THEN TOTAL
  12. ELSE 0000-00-00
  13. END AS Febrero,
  14. CASE WHEN fecha_reg
  15. BETWEEN 2009-03-01
  16. AND 2009-04-01
  17. THEN TOTAL
  18. ELSE 0000-00-00
  19. END AS Marzo,
  20. CASE WHEN fecha_reg
  21. BETWEEN 2009-04-01
  22. AND 2009-05-01
  23. THEN TOTAL
  24. ELSE 0000-00-00
  25. END AS Abril,
  26. CASE WHEN fecha_reg
  27. BETWEEN 2009-05-01
  28. AND 2009-06-01
  29. THEN TOTAL
  30. ELSE 0000-00-00
  31. END AS Mayo,
  32. CASE WHEN fecha_reg
  33. BETWEEN 2009-06-01
  34. AND 2009-07-01
  35. THEN TOTAL
  36. ELSE 0000-00-00
  37. END AS Junio,
  38. CASE WHEN fecha_reg
  39. BETWEEN 2009-07-01
  40. AND 2009-08-01
  41. THEN TOTAL
  42. ELSE 0000-00-00
  43. END AS Julio,
  44. CASE WHEN fecha_reg
  45. BETWEEN 2009-08-01
  46. AND 2009-09-01
  47. THEN TOTAL
  48. ELSE 0000-00-00
  49. END AS Agosto,
  50. CASE WHEN fecha_reg
  51. BETWEEN 2009-09-01
  52. AND 2009-10-01
  53. THEN TOTAL
  54. ELSE 0000-00-00
  55. END AS Septiembre,
  56. CASE WHEN fecha_reg
  57. BETWEEN 2009-10-01
  58. AND 2009-11-01
  59. THEN TOTAL
  60. ELSE 0000-00-00
  61. END AS Octubre,
  62. CASE WHEN fecha_reg
  63. BETWEEN 2009-11-01
  64. AND 2009-12-01
  65. THEN TOTAL
  66. ELSE 0000-00-00
  67. END AS Noviembre,
  68. CASE WHEN fecha_reg
  69. BETWEEN 2009-12-01
  70. AND 2009-12-31
  71. THEN TOTAL
  72. ELSE 0000-00-00
  73. END AS Diciembre,
  74. FROM ctas_gral ORDER BY fecha_reg ASC



En un momento te comento.

Saludos.
  • 0

#5 enecumene

enecumene

    Webmaster

  • Administrador
  • 7.419 mensajes
  • LocationRepública Dominicana

Escrito 14 enero 2009 - 11:34

Gracias Delphius, tanto como tu opción y la de Egostar me han funcionado de pelos, el código me ha quedado así con una recomendación más de Egostar:



sql
  1. SELECT EXTRACT(
  2. MONTH FROM fecha_reg ) AS mes, SUM( Monto ) AS total
  3. FROM ctas_gral
  4. WHERE EXTRACT( YEAR
  5. FROM fecha_reg ) =2008
  6. GROUP BY mes
  7. LIMIT 0 , 30



Y va de mil maravillas :D.

Saludos.
  • 0

#6 Caral

Caral

    Advanced Member

  • Moderador
  • PipPipPip
  • 4.266 mensajes
  • LocationCosta Rica

Escrito 14 enero 2009 - 06:02

Hola
Que bueno poderte ayudar, es un gusto. (y)
Saludos
  • 0




IP.Board spam blocked by CleanTalk.