Foro de elhacker.net

Programación => 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,
Código:
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
  1. SELECT SUM(cantidad) As Enero FROM tbl WHERE mes = '01';
  2. SELECT SUM(cantidad) As Febrero FROM tbl WHERE mes = '02';
  3. SELECT SUM(cantidad) As Marzo FROM tbl WHERE mes = '03';
  4.  

Pero necesito hacerlo, en SÓLO una query, es decir,
Código
  1. SELECT SUM(cantidad) As Enero, SUM(cantidad) As Febrero, SUM(cantidad) As Marzo FROM tbl WHERE (...)
  2.  


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
  1. SELECT mes, SUM(cantidad) AS cant
  2. FROM tabla
  3. GROUP BY mes

y si queres ponerle los nombres de los meses:

Código
  1. SELECT (CASE(mes)
  2. WHEN '01' THEN 'Enero'
  3. WHEN '02' THEN 'Febrero'
  4. WHEN '03' THEN 'Marzo'
  5. END) AS mes
  6. ,SUM(cantidad) AS cant
  7. FROM tabla
  8. 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
  1. SELECT
  2.  (SELECT SUM(cantidad) FROM tabla WHERE mes='01') AS Enero,
  3.  (SELECT SUM(cantidad) FROM tabla WHERE mes='02') AS Febrero,
  4.  (SELECT SUM(cantidad) FROM tabla WHERE mes='03') AS Marzo
  5. FROM tabla
  6. LIMIT 1
  7.  

Saludos.