FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Sumar Registros Con el mismo Id
Que tal amigos del Foro. Tengo un problema grande. Tengo una tabla con los sig campos: Id_almacen, Id_Concepto, Costo_Total, Tot_Unidades Lo que necesito hacer es una consulta en donde sume todos los registros que tengan el mismo Id_almacen y Id_Concepto. Pongo un Ejemplo Código:
Si observan tengo registros en donde se repiten el Id_almacen y el Id_Concepto, entonces lo que necesito hacer es sumar todos los registro que tengan el mismo Id_almacen y el mismo Id_concepto. Por ejemplo tenemos el Id _Almacen :2 y el Id_Concepto : 1003 En este caso el costo total seria 3500 y el Tot_Unidades seria 110. Espero me puedan ayudar con este caso porque ya que soy mas o menos novato en esto y ya me di de topes varias veces. Les agradezco su atencion y su ayuda. Saludos.... |
#2
|
|||
|
|||
Prueba con esta consulta...
Saludos... Última edición por maeyanes fecha: 01-04-2005 a las 21:33:38. |
#3
|
|||
|
|||
que tal
Muchas gracias por tu respuesta y por la rapidez de ella ya pribe la consulta y si funciona a la perfeccion, pero tengo una duda. Lo que pasa que esos datos los extrae de otra tabla entonces yo quisiera pasarlos a otra tabla nada mas que tengo un pequeño problema al mandar los datos del query a la tabla nada mas me copia un solo registro y eso ocurre me imagino porque como los parametros del query los comparo con los valores que existen en esa tabla. Y la verdad no he podido hacer que copie los datos. pongo un ejemplo del codigo que estoy utilizando porque la verdad no he podido. Código:
Query1.close; Query1.ParamByName('almacen').AsInteger:=Table1CIDALMACEN.AsInteger; Query1.ParamByName('concepto').AsInteger:= able1CIDCONCEPTO.AsInteger; Query1.Open; while not Qry1. eof do begin table2.append; table2CIDALMACEN.AsInteger := qry1IDAlmacen.AsInteger; table2CIDCONCEPTO.AsInteger := qry1IDConcepto.AsInteger; Table2CostoTotal.ascurrency := qry1total.ascurrency; table2TotalUnidades.asinteger := qry1total_unidades.asinteger; table2.post; qry1.next; end; Gracias por su ayuda y su atencion. Saludos... |
#4
|
||||
|
||||
Hola... no veo que pongas el query antes del while en el comienzo (first)
Saludos
__________________
Por qué todas las personas saben exactamente cómo debemos vivir nuestra vida, y nunca tienen idea de cómo deben vivir sus propias vidas.
Última edición por Pablo Carlos fecha: 05-04-2005 a las 01:03:02. |
#5
|
|||
|
|||
Que tal PAblo
Tienes razón no puse en el primero al query se me fue, pero el problema es que si te fijas en mi codigo el sql tiene parametros y estos se igualan a dos campos pero el problema es que debido a esto solo pasa una vez en al tabla. Yo tengo dos Campos IDALMACEN y IDCONCEPTO los cuales los necesito sumar y mandarlos a otra tabla pero son varios registros. un ejemplo es Tenemos el IDALMACEN 2 y el IDCONCEPTO: 1003 y en el siguiente registro tenemos el 2 y el 1003; pero despues tenemos el 3 y el 1002 entonces yo tengo que sumar todos los que sean iguales. El problema es que no se como hacerlo ya hice un pedazo de codigo pero cuando recorre la tabla me repite algunos registros, te pongo mi codigo para que veas como le he hecho. Código:
procedure TForm1.BitBtn1Click(Sender: TObject); var var1, var2, var3, var4 : integer; begin Table2.Open; while not table2.Eof do begin table2.delete; end; var3 := 0; var4 := 0; Table2.open; Table1.open; Table1.First; while not Table1.Eof do begin var1 := Table1CIDALMACEN.AsInteger; var2 := Table1CIDCONCEPTO.AsInteger; if (var1 <> var3) or (var2 <> var4) then begin Query1.close; Query1.ParamByName('almacen').AsInteger := Table1CIDALMACEN.AsInteger; Query1.ParamByName('concepto').AsInteger:= able1CIDCONCEPTO.AsInteger; Query1.Open; Table2.Append; Table2IDALMCONC.AsString := IntToStr (var1) + IntToStr (var2); Table2CIDALMACEN.AsInteger := Query1CIDALMACEN.AsInteger; Table2CIDCONCEPTO.AsInteger := Query1CIDCONCEPTO.AsInteger; Table2CTOTALCOSTO.AsCurrency := Query1total.AsCurrency; Table2CTOTALUNIDADES.AsInteger := Query1total_unidades.AsInteger; Table2.Post; var3 := var1; var4 := var2; //Table1.Next; end; // else Table1.Next; end; end; end. Saludos..... |
#6
|
||||
|
||||
Bueno, no se si te entiendo bien, pero pienso que deberias probar la siguiente consulta:
Código:
Insert into tablaFinal(id_almacen, id_concepto, costoTotal, totalUnidades) Select id_almacen, id_concepto, sum(costoTotal), sum(totalUnidades) from tablaOrigen Group by id_almacen, id_concepto Espero que te sirva. |
#7
|
|||
|
|||
Que tal
Muchas Gracias por la respuesta lo voy a checar que tal queda y les comento. Espero me sirva. Saludos.... |
|
|
|