Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

me muestre datos de todos los meses

Estas en el tema de me muestre datos de todos los meses en el foro de Mysql en Foros del Web. Buen día compañeros del Foro tengo una consulta que es la siguiente: @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código MySQL: Ver original SELECT NVENTASD.NO_FAC , NVENTASD.CVE_PROD , NVENTASD.CSE_PROD , ...
  #1 (permalink)  
Antiguo 11/01/2012, 11:03
Avatar de edgar_cln  
Fecha de Ingreso: agosto-2010
Ubicación: Sierra Sinaloense
Mensajes: 122
Antigüedad: 13 años, 8 meses
Puntos: 4
me muestre datos de todos los meses

Buen día compañeros del Foro tengo una consulta que es la siguiente:
Código MySQL:
Ver original
  1. NVENTASD.NO_FAC,
  2. NVENTASD.CVE_PROD,
  3. NVENTASD.CSE_PROD,
  4. NVENTASD.CVE_SUC,
  5. NVENTASD.UNIDAD,
  6. NVENTASD.CANT_SURT,
  7. NVENTASD.VALOR_PROD,
  8. NVENTASD.SUBT_PROD,
  9. PRODUCTO.DESC_PROD,
  10. NVENTASC.STATUS_C,
  11. NVENTASC.FALTA_FAC,
  12. NVENTASC.CVE_SUC
  13. FROM NVENTASD
  14. LEFT JOIN PRODUCTO ON NVENTASD.CVE_PROD=PRODUCTO.CVE_PROD
  15. LEFT JOIN NVENTASC ON NVENTASD.NO_FAC=NVENTASC.NO_FAC
  16. WHERE NVENTASD.CVE_SUC='MAT' AND NVENTASC.CVE_SUC='MAT' AND NVENTASC.STATUS_FAC='Pagada' AND NVENTASC.FALTA_FAC BETWEEN '2011-11-01' AND '2011-11-30'

ahi mando a llamar por medio de Sucursal y Fecha todo bien, pero como puedo hacerle para nomas llamar por Sucursal y Año y que me muestre solo la pura cantidad surtida (CANT_SURT) parecido asi...

| Producto | Enero | Febrero | Marzo | Abril | Mayo | Junio | Julio | ....
Correa | 10 | 50 | 15 | 12 | 16 | 87 | 100 | ...

quisiera que me mostrara asi .... si me entienden no soy bueno explicando de anmtemano muchas graciass
  #2 (permalink)  
Antiguo 12/01/2012, 03:16
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: me muestre datos de todos los meses

Código MySQL:
Ver original
  1. NVENTASD.CVE_PROD,
  2. SUM(if(MONTH(NVENTASC.FALTA_FAC)=1,NVENTASD.CANT_SURT,0) Enero,
  3. SUM(if(MONTH(NVENTASC.FALTA_FAC)=2,NVENTASD.CANT_SURT,0) Febrero,
  4. ...
  5. FROM NVENTASD
  6. LEFT JOIN PRODUCTO ON NVENTASD.CVE_PROD=PRODUCTO.CVE_PROD
  7. LEFT JOIN NVENTASC ON NVENTASD.NO_FAC=NVENTASC.NO_FAC
  8. WHERE NVENTASD.CVE_SUC='MAT' AND NVENTASC.CVE_SUC='MAT' AND NVENTASC.STATUS_FAC='Pagada' AND YEAR(NVENTASC.FALTA_FAC)=2011;
  9. GROUP BY NVENTASD.CVE_PROD;

completala...

(no se si NVENTASD.CVE_PROD es el campo producto.... si no es cambialo por el que sea en la lista de campos y en el group by)


WHERE NVENTASD.CVE_SUC='MAT' AND NVENTASC.CVE_SUC='MAT'

una de las dos sobra ya que si se cumple

ON NVENTASD.NO_FAC=NVENTASC.NO_FAC

ya seran de la misma sucursal no?
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #3 (permalink)  
Antiguo 12/01/2012, 13:15
Avatar de edgar_cln  
Fecha de Ingreso: agosto-2010
Ubicación: Sierra Sinaloense
Mensajes: 122
Antigüedad: 13 años, 8 meses
Puntos: 4
Respuesta: me muestre datos de todos los meses

Antes que nada gracias quimfv por tu ayuda la complete y la hize de esta forma:
Código MySQL:
Ver original
  1.     NVENTASD.CVE_PROD, PRODUCTO.DESC_PROD, NVENTASC.FALTA_FAC,
  2.     SUM(if(MONTH(NVENTASC.FALTA_FAC)=1,NVENTASD.CANT_SURT,0) Enero,
  3.     SUM(if(MONTH(NVENTASC.FALTA_FAC)=2,NVENTASD.CANT_SURT,0) Febrero,
  4.     SUM(if(MONTH(NVENTASC.FALTA_FAC)=3,NVENTASD.CANT_SURT,0) Marzo,
  5.     SUM(if(MONTH(NVENTASC.FALTA_FAC)=4,NVENTASD.CANT_SURT,0) Abril,
  6.     SUM(if(MONTH(NVENTASC.FALTA_FAC)=5,NVENTASD.CANT_SURT,0) Mayo,
  7.     SUM(if(MONTH(NVENTASC.FALTA_FAC)=6,NVENTASD.CANT_SURT,0) Junio,
  8.     SUM(if(MONTH(NVENTASC.FALTA_FAC)=7,NVENTASD.CANT_SURT,0) Julio,
  9.     SUM(if(MONTH(NVENTASC.FALTA_FAC)=8,NVENTASD.CANT_SURT,0) Agosto,
  10.     SUM(if(MONTH(NVENTASC.FALTA_FAC)=9,NVENTASD.CANT_SURT,0) Septiembre,
  11.     SUM(if(MONTH(NVENTASC.FALTA_FAC)=10,NVENTASD.CANT_SURT,0) Octubre,
  12.     SUM(if(MONTH(NVENTASC.FALTA_FAC)=11,NVENTASD.CANT_SURT,0) Noviembre,
  13.     SUM(if(MONTH(NVENTASC.FALTA_FAC)=12,NVENTASD.CANT_SURT,0) Diciembre
  14.     FROM NVENTASD
  15.     LEFT JOIN PRODUCTO ON NVENTASD.CVE_PROD=PRODUCTO.CVE_PROD
  16.     LEFT JOIN NVENTASC ON NVENTASD.NO_FAC=NVENTASC.NO_FAC
  17.     WHERE NVENTASD.CVE_SUC='MAT' AND NVENTASC.CVE_SUC='MAT' AND NVENTASC.STATUS_FAC='Pagada' AND YEAR(NVENTASC.FALTA_FAC)='2011'
  18.     GROUP BY NVENTASD.CVE_PROD;

me marcaba varios errores al principio pero asila deje ya que solo me marco uno es el siguiente:

Error Code : 1064
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'SUM(if(MONTH(NVENTASC.FALTA_FAC)=1,NVENTASD.CANT_ SURT,0) Enero,
SUM(if(MONTH' at line 3
(0 ms taken)

que podra ser .. gracias !
  #4 (permalink)  
Antiguo 12/01/2012, 13:35
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 3 meses
Puntos: 447
Respuesta: me muestre datos de todos los meses

Hola edgar_cln:

Con permiso de quimfv, el error es porque te falta cerrar el paréntesis de la función SUM antes de poner el alias Enero:

Código:
SUM(if(MONTH(NVENTASC.FALTA_FAC)=1,NVENTASD.CANT_SURT,0) Enero,
SUM(IF(MONTH(NVENTASC.FALTA_FAC)=1,NVENTASD.CANT_SURT,0)) Enero,
Observa los paréntesis de color.

Saludos
Leo
  #5 (permalink)  
Antiguo 13/01/2012, 02:03
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: me muestre datos de todos los meses

Toda la razon y el error ya estaba en mi ejemplo. Obviamente lo tienes que corregir en todos los meses.
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #6 (permalink)  
Antiguo 13/01/2012, 02:06
Avatar de edgar_cln  
Fecha de Ingreso: agosto-2010
Ubicación: Sierra Sinaloense
Mensajes: 122
Antigüedad: 13 años, 8 meses
Puntos: 4
Respuesta: me muestre datos de todos los meses

Muchas gracias "leonardo_josue" y de antemano "quimfv" sin tu ejemplo no hubiera logrado hacerlo en si ya quedo...
Código MySQL:
Ver original
  1. SELECT T.NUMERO, T.SUCURSAL, T.CLASE, T.CLAVE, T.UNIDAD, ROUND((SUM(CANT_SURT)),2) CANTIDADTOTAL, ROUND((SUM(SUBT_PROD*TIPO_MONEDAA) / SUM(CANT_SURT)),2) AS DIVIDOS,
  2.     ROUND((SUM(SUBT_PROD*TIPO_MONEDAA)),2) TOTAL, T.DESCRIPCION, T.STATU, T.FECHA, T.SUC, ROUND((SUM(SUBT_PROD) / SUM(CANT_SURT)),2) AS DIVIDOS,
  3.  
  4. SUM(if(MONTH(T.FECHA)=1,T.CANT_SURT,0)) Enero,
  5. SUM(if(MONTH(T.FECHA)=2,T.CANT_SURT,0)) Febrero,
  6. SUM(if(MONTH(T.FECHA)=3,T.CANT_SURT,0)) Marzo,
  7. SUM(if(MONTH(T.FECHA)=4,T.CANT_SURT,0)) Abril,
  8. SUM(if(MONTH(T.FECHA)=5,T.CANT_SURT,0)) Mayo,
  9. SUM(if(MONTH(T.FECHA)=6,T.CANT_SURT,0)) Junio,
  10. SUM(if(MONTH(T.FECHA)=7,T.CANT_SURT,0)) Julio,
  11. SUM(if(MONTH(T.FECHA)=8,T.CANT_SURT,0)) Agosto,
  12. SUM(if(MONTH(T.FECHA)=9,T.CANT_SURT,0)) Septiembre,
  13. SUM(if(MONTH(T.FECHA)=10,T.CANT_SURT,0)) Octubre,
  14. SUM(if(MONTH(T.FECHA)=11,T.CANT_SURT,0)) Noviembre,
  15. SUM(if(MONTH(T.FECHA)=12,T.CANT_SURT,0)) Diciembre
  16.  
  17. (SELECT STRAIGHT_JOIN REMD.NO_REM AS NUMERO, REMD.SUC_REM AS SUCURSAL, REMD.CSE_PROD AS CLASE, REMD.CVE_PROD AS CLAVE, REMD.UNIDAD, REMD.CANT_SURT, REMD.VALOR_PROD, REMD.SUBT_PROD, PRODUCTO.DESC_PROD AS DESCRIPCION,
  18. REMC.STATUS_REM AS STATU, REMC.FALTA_REM AS FECHA, REMC.SUC_REM AS SUC,
  19.  
  20. if(REMD.CVE_MON_D=2,13.40,1) AS TIPO_MONEDAA
  21.  
  22. FROM REMD
  23. LEFT JOIN PRODUCTO ON REMD.CVE_PROD=PRODUCTO.CVE_PROD
  24. LEFT JOIN REMC ON REMD.NO_REM=REMC.NO_REM
  25. WHERE REMD.SUC_REM='MAT' AND REMC.SUC_REM='MAT' AND (REMC.STATUS_REM='Emitida' OR REMC.STATUS_REM='Facturada' OR REMC.STATUS_REM='Parcial')
  26. AND YEAR(REMC.FALTA_REM)='2011'  
  27.  
  28.  
  29. SELECT STRAIGHT_JOIN NVENTASD.NO_FAC AS NUMERO, NVENTASD.CVE_SUC AS SUCURSAL, NVENTASD.CSE_PROD AS CLASE, NVENTASD.CVE_PROD AS CLAVE, NVENTASD.UNIDAD, NVENTASD.CANT_SURT, NVENTASD.VALOR_PROD, NVENTASD.SUBT_PROD, PRODUCTO.DESC_PROD AS DESCRIPCION,
  30. NVENTASC.STATUS_FAC AS STATU, NVENTASC.FALTA_FAC AS FECHA, NVENTASC.CVE_SUC AS SUC,1 as TIPO_MONEDAA
  31.  
  32. FROM NVENTASD
  33. LEFT JOIN PRODUCTO ON NVENTASD.CVE_PROD=PRODUCTO.CVE_PROD
  34. LEFT JOIN NVENTASC ON NVENTASD.NO_FAC=NVENTASC.NO_FAC
  35. WHERE NVENTASD.CVE_SUC='MAT' AND NVENTASC.CVE_SUC='MAT' AND NVENTASC.STATUS_FAC='Pagada' AND YEAR(NVENTASC.FALTA_FAC)='2011'
  36. )as T
  37. GROUP BY T.CLAVE

es una santa consuta que no me dejo dormir en dos dias pero ya acabe gracias ... aunque ta toda chueca pero jala !!

p.D.: qwuinfm respeto ala sucursales asi lo intente pero como decias en el inner join pero no me daba por eso opte hacerlo de la manera que toy haciendo .. gracias !!
  #7 (permalink)  
Antiguo 13/01/2012, 02:17
Avatar de edgar_cln  
Fecha de Ingreso: agosto-2010
Ubicación: Sierra Sinaloense
Mensajes: 122
Antigüedad: 13 años, 8 meses
Puntos: 4
Respuesta: me muestre datos de todos los meses

Ultima duda ... alguien tendra un ejemplo de como exportar el resultado que me sale dela consulta de arriba a un archivo excel .xls ??
  #8 (permalink)  
Antiguo 13/01/2012, 06:05
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: me muestre datos de todos los meses

Código MySQL:
Ver original
  1. SELECT * INTO OUTFILE 'result.csv'
  2. FROM (...la consulta...);

Supongo que te funcionará, el fichero csv resultante se puede abrir con excel....

http://dev.mysql.com/doc/refman/5.0/en/select-into.html
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.

Etiquetas: join, meses, select
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:33.