Ver Mensaje Individual
  #3  
Antiguo 04-10-2003
Avatar de javiermorales
javiermorales javiermorales is offline
Miembro
 
Registrado: may 2003
Ubicación: Alicante
Posts: 272
Reputación: 24
javiermorales Va por buen camino
Bueno he continuado suponiendo que la clave de unión para la restricción de las sumas es la columna 2 y 3. Te comento, tienes varias restricciones, lo primero es calcular la suma de las columnas 5:
Código:
SELECT c1, c2, c3, c4, Sum(c5) AS Suma5
FROM tabla
GROUP BY c1,c2,c3,c4;
A esta consulta la llamaremos tablasum
Lo siguiente es obtener las que deben omitirse por cumplir con la restricción de las sumas:
Código:
SELECT A.*
FROM tablasum AS A INNER JOIN tablasum B AS B 
ON (A.c3 = B.c3) AND (A.c2 = B.c2) AND 
(A.Suma5 = B.Suma5)
WHERE (((A.c1)="D") AND ((B.c1)="H"))
A esta otra la llamaremos nosalir
Una vez que tenemos este dato, debemos obtener de la tabla inicial, las que no aparecen en esta consulta
Código:
SELECT tabla.*
FROM tabla LEFT JOIN nosalir ON (tabla.c5 = nosalir.Suma5) 
AND (tabla.c4 = nosalir.c4) AND (tabla.c3 = nosalir.c3) AND
(tabla.c2 = nosalir.c2) AND (tabla.c1 = nosalir.c1)
WHERE (((tabla.c1)="D") AND ((nosalir.c1) Is Null));
Solo saco las D, por que supongo que es lo que quieres, si no es así coméntalo. Las tablas intermedias puedes tener en procedimientos almacenados o en la propia base de datos dependiendo del motor que utilices.Espero que te sirva, un saludo.
Responder Con Cita