Test Foro de elhacker.net SMF 2.1

Programación => Desarrollo Web => Bases de Datos => Mensaje iniciado por: Shell Root en 16 Octubre 2012, 21:17 PM

Título: SELECT MULTIPLE
Publicado por: Shell Root en 16 Octubre 2012, 21:17 PM
Supongamos que tengo esta tabla,
mes documento cantidad
01 AC 4682
01 AC 175
02 AC 6517
02 AC 550
03 AC 5118
03 AC 5760
02 AC 547
01 AC 602


Necesito realizar una sumatoría de valores por mes de esa tabla, es decir,
Código (mysql) [Seleccionar]

SELECT SUM(cantidad) As Enero FROM tbl WHERE mes = '01';
SELECT SUM(cantidad) As Febrero FROM tbl WHERE mes = '02';
SELECT SUM(cantidad) As Marzo FROM tbl WHERE mes = '03';


Pero necesito hacerlo, en SÓLO una query, es decir,
Código (mysql) [Seleccionar]

SELECT SUM(cantidad) As Enero, SUM(cantidad) As Febrero, SUM(cantidad) As Marzo FROM tbl WHERE (...)
Título: Re: SELECT MULTIPLE
Publicado por: seba123neo en 16 Octubre 2012, 22:01 PM
¿ y si agrupas por mes y sumas la cantidad ? algo asi:

Código (sql) [Seleccionar]
SELECT mes, SUM(cantidad) AS cant
FROM tabla
GROUP BY mes


y si queres ponerle los nombres de los meses:

Código (sql) [Seleccionar]
SELECT (CASE(mes)
WHEN '01' THEN 'Enero'
WHEN '02' THEN 'Febrero'
WHEN '03' THEN 'Marzo'
END) AS mes
,SUM(cantidad) AS cant
FROM tabla
GROUP BY mes


saludos.
Título: Re: SELECT MULTIPLE
Publicado por: Shell Root en 16 Octubre 2012, 23:26 PM
Sí, pero eso sería por filas, necesito es por columnas :p, ya igual lo solucione, pero si existe esta forma sería mucho mejor.
Título: Re: SELECT MULTIPLE
Publicado por: HdM en 17 Octubre 2012, 10:28 AM
Hola.

Si necesitas que sea por columnas, entonces la consulta a montar podría ser del tipo:

Código (sql) [Seleccionar]

SELECT
  (SELECT SUM(cantidad) FROM tabla WHERE mes='01') as Enero,
  (SELECT SUM(cantidad) FROM tabla WHERE mes='02') as Febrero,
  (SELECT SUM(cantidad) FROM tabla WHERE mes='03') as Marzo
FROM tabla
LIMIT 1


Saludos.