FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Filas agrupadas por suma
Hola muchachos,
Quizas alguien ya ha efectuado lo que me aproblema; en una tabla tengo varios registros de la siguiente manera: D,FA ,100,xxx,100 D,FA ,345,ccc, 200 H,FA ,100,yyy,050 H,FA ,100,yyy,050 D,CH,555,xxx,100 tengo que llegar a este resultado: D,FA ,345,ccc,200 D,CH,555,xxx,100 o sea exclui la fila 1, 3 y 4 pues son iguales en la columna 2 y 3 y ademas la suma de la columna 5, cuando la columna 1 es 'D' es igual a la suma de la columna 5 cuando la columna 1 es 'H'. Espero haberme explicado bien. Gracias de antemano. Ulises |
#2
|
||||
|
||||
Hola estoy probando tu problema y me falta que comentes, ¿porqué aparece la columna D,CH,555,xxx,100?, ¿cual es la clave primaria?.
|
#3
|
||||
|
||||
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; 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")) 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)); |
#4
|
|||
|
|||
Javier, gracias por responder, en realidad ando fuera de Chile y no habia podido comunicarme a Internet..
Respondiendo a tu pregunta, la clave primaria son otros campos que no los puse en el ejemplo, corresponden a Numero de Empresa, Numero de Comprobante, Tipo de Comprobante, Fecha de Comprobante y Linea de Detalle: Ej, 04, 1000, 4, 10-10-2003, 1 04, 1000, 4, 10-10-2003, 2 04, 1000, 4, 10-10-2003, 3 04, 1001, 4, 11-10-2003, 1 04, 1001, 4, 11-10-2003, 2 Es dentro de cada uno de estos registros que esta la información mostrada con anterioridad. De todas maneras probaré más tarde tus consejos. Gracias de nuevo. Ulises |
|
|
|