Ver Mensaje Individual
  #6 (permalink)  
Antiguo 09/06/2015, 09:26
Avatar de gnzsoloyo
gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Obtener total y subtotales

Cita:
si pongo sum(elemento1)>0 me da error...¿por qué?
Porque SUM() es una función de agregación, y en todos los DBMS está estrictamente prohibido poner funciones de agregación en el WHERE.

El WHERE es un condicionante que se evalúa por cada uno de los registros considerado individualmente, es decir, filtra los registros que deben cumplir las condiciones indicadas. En cambio un SUM() es una función que para tener significado debe agrupar 1...N registros diferentes. Ambas cosas son funcionalmente incompatibles, ¿se entiende?

Ahora bien, si lo que deseas es que, de todos los registros que se obtienen agrupando, sólo devuelva los que cumplen con un valor de sumatoria dado, entonces debes usar HAVING

Código SQL:
Ver original
  1. SELECT *, (SUM(elemento1)+SUM(elemento2)+SUM(elemento3)) total
  2. FROM datos
  3. WHERE elemento1>0 && elemento2>0 && elemento3>0
  4. GROUP BY num
  5. ORDER BY total
  6. HAVING (SUM(elemento1)+SUM(elemento2)+SUM(elemento3))>0
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)