Como hago un filtro de una consulta avanzada de SQL

Donde la columna Balance es el resultado de una operación de otras tablas como se puede observar en el siguiente query:

SELECT conductores.Nombre AS Conductor, productos.Nombre AS Producto, (Sum(Entrada) + Sum(Traslados) - Sum(Salida)) as Balance
FROM
(
SELECT idConductor, idProducto, Cantidad_Entrada AS Entrada, 0 AS Salida, 0 as Traslados FROM tshawtum_Portobello.entradas
UNION ALL
(
SELECT idConductor, idProducto, 0 AS Entrada, 0 AS Salida, Cantidad as Traslados FROM tshawtum_Portobello.traslados
)
UNION ALL
(
SELECT idConductor, idProducto, 0 AS Entrada, Cantidad_Salida as Salida, 0 as Traslados FROM tshawtum_Portobello.salidas
LEFT JOIN tshawtum_Portobello.resumen_salidas
ON tshawtum_Portobello.salidas.idResumen_Salidas = tshawtum_Portobello.resumen_salidas.idResumen_Salidas
)
) a
LEFT JOIN tshawtum_Portobello.productos productos ON a.idProducto = tshawtum_Portobello.productos.idproductos
LEFT JOIN tshawtum_Portobello.conductores conductores ON a.idConductor = tshawtum_Portobello.conductores.idConductor where conductores.Nombre = 'ALIRIO RIVEROS'
GROUP BY a.idConductor, a.idProducto
ORDER BY `productos`.`Nombre` ASC

Como se observa en la imagen me muestra 9 resultados de los cuales 1 es = a 0, lo que necesito es que dicho resultado solo me muestre los valores de esa columna <> de 0

1 respuesta

Respuesta
1

Buscando una solución a mi pregunta encontré la sentencia

Having Sum(Entrada) + Sum(Traslados) - Sum(Salida) <> 0

Lo cual me deja el siguiente query como resultado para dar respuesta a mi pregunta, espero esto le sirva a otras personas que tengan el mismo inconveniente en algún momento.
SELECT conductores.Nombre AS Conductor, productos.Nombre AS Producto, (Sum(Entrada) + Sum(Traslados) - Sum(Salida)) as Balance
FROM
(
SELECT idConductor, idProducto, Cantidad_Entrada AS Entrada, 0 AS Salida, 0 as Traslados FROM tshawtum_Portobello.entradas
UNION ALL
(
SELECT idConductor, idProducto, 0 AS Entrada, 0 AS Salida, Cantidad as Traslados FROM tshawtum_Portobello.traslados
)
UNION ALL
(
SELECT idConductor, idProducto, 0 AS Entrada, Cantidad_Salida as Salida, 0 as Traslados FROM tshawtum_Portobello.salidas
LEFT JOIN tshawtum_Portobello.resumen_salidas
ON tshawtum_Portobello.salidas.idResumen_Salidas = tshawtum_Portobello.resumen_salidas.idResumen_Salidas
)
) a
LEFT JOIN tshawtum_Portobello.productos productos ON a.idProducto = tshawtum_Portobello.productos.idproductos
LEFT JOIN tshawtum_Portobello.conductores conductores ON a.idConductor = tshawtum_Portobello.conductores.idConductor where conductores.Nombre = 'ALIRIO RIVEROS'
GROUP BY a.idConductor, a.idProducto
HAVING Sum(Entrada) + Sum(Traslados) - Sum(Salida) <> 0
ORDER BY `productos`.`Nombre` ASC

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas