Unir resultados de dos declaraciones selectas
-
06-07-2019 - |
Pregunta
Tengo una tabla que sirve como registro de transacciones:
Date Action Qty
11-23 ADD 1
11-23 REMOVE 2
11-23 ADD 3
Me gustaría que una consulta agregue todos los AGREGAR y todos los ELIMINAR por separado para una fecha determinada.
Cada una de estas declaraciones select funciona bien, pero no se pueden unir:
select date, sum(qty) as Added from table where action='Add' and date='11-23'
natural join
select date, sum(qty) as Removed from table where action='Remove' and date='11-23'
¿Puedo almacenar los resultados de cada instrucción select en una tabla y luego unirlos? ¿Hay alguna manera de evitar esto todo junto?
Gracias- Jonathan
Solución
Eche un vistazo a la sintaxis de UNION, si realmente desea agregar los conjuntos de resultados de múltiples consultas en una sola:
http://dev.mysql.com/doc/refman /5.0/en/union.html
Sin embargo, en este caso, eche un vistazo a GRUPO POR
Puede agrupar en Fecha, Acción
, lo que da como resultado un registro por día por acción, con SUM ()
poder darle la cantidad.
Por ejemplo:
select
date,
action,
sum(qty) AS Quantity
from
table
group by
date, action
resultará en:
11-23 | ADD | 10
11-23 | REMOVE | 5
11-24 | ADD | 4
11-24 | REMOVE | 3
Otros consejos
Sería útil si mostrara qué salida realmente desea. De su " como agregado " y "Quitado" Supongo que no quieres una unión, pero tal vez algo como esto:
select
date,
sum(if(action='ADD',qty,0)) as Added,
sum(if(action='REMOVE',qty,0)) as Removed
from `table`
where date='11-23';
(con un grupo por fecha
si está seleccionando varias fechas)