Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

sumar o restar resultados

Estas en el tema de sumar o restar resultados en el foro de SQL Server en Foros del Web. Hola, mi tema es el siguiente: Yo tengo una tabla, de donde saco entre todos campos uno que tiene importes, esos importes los voy a ...
  #1 (permalink)  
Antiguo 22/02/2007, 08:47
 
Fecha de Ingreso: junio-2005
Mensajes: 337
Antigüedad: 18 años, 11 meses
Puntos: 1
sumar o restar resultados

Hola, mi tema es el siguiente:
Yo tengo una tabla, de donde saco entre todos campos uno que tiene importes, esos importes los voy a ir sumando o restando en base a un codigo de otra tabla yo tengo:

select nro_ctacomerc,impor_nofact, grupo_evento,evento where
fec_presentacion='@fec_pres'
and fec_pago='@fec_pago'
and cod_car=@cod_car
AND cod_conciliacion=@cod_conciliacion

estoy tratando de hacer algo asi...pero evidentemente no es la forma ...
set @importe=impor_nofact

while @importe <> ''
@suma =@suma + @importe

en la otra tabla lo vinculo mediante el cod_conciliacion, grupo_evento y evento.
De que manera puedo guardar el resultado para hacer un while y entrar a la otra tabla para ver si sumo o resto?
se puede hacer algo asi?
Espero ayuda please, gracias!!
  #2 (permalink)  
Antiguo 22/02/2007, 08:56
Avatar de Andres95
Colaborador
 
Fecha de Ingreso: diciembre-2004
Mensajes: 1.802
Antigüedad: 19 años, 4 meses
Puntos: 38
Re: sumar o restar resultados

No requieres un while, si posteas la estructura de tus tablas con incluyendo los campos llave (para hacer el join) te podrian ayudar a armar tu update...

un saludo
__________________
La sencillez y naturalidad son el supremo y último fin de la cultura...
--
MCTS : SQL Server 2008, .NET Framework 3.5, ASP.NET Applications.
  #3 (permalink)  
Antiguo 22/02/2007, 09:18
 
Fecha de Ingreso: junio-2005
Mensajes: 337
Antigüedad: 18 años, 11 meses
Puntos: 1
Re: sumar o restar resultados

pero yo no tengo que hacer un update, tengo que mostrar los importes en base a un numero de cuenta.
como puedo asignar el valor del campo del select a una variable para luego usarla?
es decir select importe from ...
y ese importe asginarselo a un @importe?

Gracias.!
  #4 (permalink)  
Antiguo 22/02/2007, 09:25
Avatar de Andres95
Colaborador
 
Fecha de Ingreso: diciembre-2004
Mensajes: 1.802
Antigüedad: 19 años, 4 meses
Puntos: 38
Re: sumar o restar resultados

ok, para asignar el valor a una variable desde un select lo puedes hacer asi:
Código:
Select @importe = importe 
From   Mitabla
Where micondicion
sin embargo te comento que hacer whiles en sql para recorrer tablas no es lo optimo... lo mejor es hacer las consultas o actualizaciones de forma masiva...
__________________
La sencillez y naturalidad son el supremo y último fin de la cultura...
--
MCTS : SQL Server 2008, .NET Framework 3.5, ASP.NET Applications.
  #5 (permalink)  
Antiguo 22/02/2007, 09:26
Avatar de Jorgemen  
Fecha de Ingreso: mayo-2005
Ubicación: Perú
Mensajes: 322
Antigüedad: 19 años
Puntos: 1
Re: sumar o restar resultados

lo que entiendo es que quieres hacer una suma total a una columna de tu select, creo que podrías probar con Computer Sum(campo), en un buscador hay más sobre ello
__________________
Hosting:www.codeperu.com, Trabajo en Perú: www.trabajoperuano.com
  #6 (permalink)  
Antiguo 22/02/2007, 10:09
 
Fecha de Ingreso: junio-2005
Mensajes: 337
Antigüedad: 18 años, 11 meses
Puntos: 1
Re: sumar o restar resultados

Hola, estoy probando con el SUM(CAMPO) ya que con el @importe=...necesito un solo campo y yo tengo que seleccionar mas...
estoy haciendo lo siguiente:

select cod_ext_cue,fec_presentacion,fec_pago,sum(impor_no fact)as importe,cf_movifact_vi_hist.cod_grp_evento,cf_movi fact_vi_hist.cod_evento,
cf_movifact_vi_hist.cod_conciliacion
from cf_movifact_vi_hist,cf_mis_ps_conciliacion_activa

where cf_mis_ps_conciliacion_activa.cod_conciliacion= cf_movifact_vi_hist.cod_conciliacion
and cf_mis_ps_conciliacion_activa.cod_grp_evento= cf_mis_ps_conciliacion_activa.cod_grp_evento
and cf_mis_ps_conciliacion_activa.cod_evento= cf_mis_ps_conciliacion_activa.cod_evento
and
signo_consumo=1 or signo_adelanto=1 or signo_cts_std=1 or signo_cts_ace=1

group by cf_movifact_vi_hist.cod_ext_cue,cf_movifact_vi_his t.fec_presentacion,cf_movifact_vi_hist.fec_pago,cf _movifact_vi_hist.cod_evento,
cf_movifact_vi_hist.cod_conciliacion,cf_movifact_v i_hist.cod_grp_evento

Hasta ahi todo bien, el tema es que si ninguno de los signos es =1, es decir
signo_consumo=0 or signo_adelanto=0 or signo_cts_std=0 or signo_cts_ace=0
yo tengo que restar el importe, como puedo agregar eso?
gracias!!
  #7 (permalink)  
Antiguo 22/02/2007, 10:41
Avatar de Andres95
Colaborador
 
Fecha de Ingreso: diciembre-2004
Mensajes: 1.802
Antigüedad: 19 años, 4 meses
Puntos: 38
Re: sumar o restar resultados


segun parece hay algo mal en el join que haces (en la parte del where)

porque comparas el mismo campo de la misma tabla en dos ocasiones

Código:
and cf_mis_ps_conciliacion_activa.cod_grp_evento=  
     cf_mis_ps_conciliacion_activa.cod_grp_evento

and cf_mis_ps_conciliacion_activa.cod_evento= 
      cf_mis_ps_conciliacion_activa.cod_evento
trate de acomodar tu select utilizando alias (con lo que se puede apreciar mejor la consulta) y joins (para relacionar ambas tablas) y elimine lo de las señales que supongo que solo se utilizan para determinar si el importe se suma o se resta, por lo pronto verifica si estan bien los joins y si los campos corresponden con las tablas y luego vemos lo de la suma y resta...

Código:
Select  H.cod_ext_cue
       ,H.fec_presentacion
       ,H.fec_pago
       ,sum(A.impor_nofact)as importe
       ,H.cod_grp_evento
       ,H.cod_evento
       ,H.cod_conciliacion
From   cf_movifact_vi_hist  H
Inner join
       cf_mis_ps_conciliacion_activa A
On     A.cod_conciliacion= H.cod_conciliacion   And 
       A.cod_grp_evento= H.cod_grp_evento       And
       A.cod_evento= H.cod_evento               And
Group by 
        H.cod_ext_cue
       ,H.fec_presentacion
       ,H.fec_pago
       ,H.cod_evento
       ,H.cod_conciliacion
       ,H.cod_grp_evento
__________________
La sencillez y naturalidad son el supremo y último fin de la cultura...
--
MCTS : SQL Server 2008, .NET Framework 3.5, ASP.NET Applications.
  #8 (permalink)  
Antiguo 22/02/2007, 11:50
 
Fecha de Ingreso: junio-2005
Mensajes: 337
Antigüedad: 18 años, 11 meses
Puntos: 1
Re: sumar o restar resultados

Hola! te cuento que no se repiten los campos son asi, dos distintos, cod_grp_evento y cod_evento.
Gracias por la sugerencia espero ayuda con lo de la suma!!
  #9 (permalink)  
Antiguo 22/02/2007, 12:29
Avatar de Andres95
Colaborador
 
Fecha de Ingreso: diciembre-2004
Mensajes: 1.802
Antigüedad: 19 años, 4 meses
Puntos: 38
Re: sumar o restar resultados

bueno me refiero a que los estas direccionando a la misma tabla, resultando que siempre entrarian en esa validacion.... como ves el query que te envie?? si estan correctos los campos..
__________________
La sencillez y naturalidad son el supremo y último fin de la cultura...
--
MCTS : SQL Server 2008, .NET Framework 3.5, ASP.NET Applications.
  #10 (permalink)  
Antiguo 22/02/2007, 13:24
 
Fecha de Ingreso: junio-2005
Mensajes: 337
Antigüedad: 18 años, 11 meses
Puntos: 1
Re: sumar o restar resultados

siiiiiiiiiiii, tenias razon , por eso me devolvia taaaaaaaaaantos registros!!
mil gracias!!
sigo probando el tema de la resta y suma...vos tenes alguna pista?
gracias, sigo por aca!
Saludos!!
  #11 (permalink)  
Antiguo 22/02/2007, 14:05
Avatar de Andres95
Colaborador
 
Fecha de Ingreso: diciembre-2004
Mensajes: 1.802
Antigüedad: 19 años, 4 meses
Puntos: 38
Re: sumar o restar resultados

suponiendo que el query anterior estaba correcto....
Cuando al menos uno de los signos es igual a 1 se suma el importe
de lo contrario (cuando todos son diferentes de 1) se resta el importe correspondiente....

Código:
Select  H.cod_ext_cue
       ,H.fec_presentacion
       ,H.fec_pago
       ,sum(Case When signo_consumo=1 Or signo_adelanto=1 Or signo_cts_std=1 Or signo_cts_ace=1)
                 Then A.impor_nofact
                 Else (A.impor_nofact * (-1)) End) As importe
       ,H.cod_grp_evento
       ,H.cod_evento
       ,H.cod_conciliacion
From   cf_movifact_vi_hist  H
Inner join
       cf_mis_ps_conciliacion_activa A
On     A.cod_conciliacion= H.cod_conciliacion   And 
       A.cod_grp_evento= H.cod_grp_evento       And
       A.cod_evento= H.cod_evento               And
Group by 
        H.cod_ext_cue
       ,H.fec_presentacion
       ,H.fec_pago
       ,H.cod_evento
       ,H.cod_conciliacion
       ,H.cod_grp_evento
__________________
La sencillez y naturalidad son el supremo y último fin de la cultura...
--
MCTS : SQL Server 2008, .NET Framework 3.5, ASP.NET Applications.
  #12 (permalink)  
Antiguo 23/02/2007, 08:26
 
Fecha de Ingreso: junio-2005
Mensajes: 337
Antigüedad: 18 años, 11 meses
Puntos: 1
Re: sumar o restar resultados

Hola Andres! Gracias por tu ayuda!
adapte lo que me pasaste de acuerdo a los parametros que necesitaba me quedo de la siguiente manera:

Select H.cod_ext_cue
,H.fec_presentacion
,H.fec_pago
,sum(Case When signo_consumo=1 Or signo_adelanto=1 Or signo_cts_std=1 Or signo_cts_ace=1
Then H.impor_nofact
Else (H.impor_nofact * (-1)) End) As importe
,H.cod_grp_evento
,H.cod_evento
,H.cod_conciliacion
From cf_movifact_vi_hist H
Inner join
cf_mis_ps_conciliacion_activa A
On A.cod_conciliacion= H.cod_conciliacion And
A.cod_grp_evento= H.cod_grp_evento And
A.cod_evento= H.cod_evento
WHERE H.fec_presentacion='@pFec_pres'
and H.fec_pago='@pFec_clearing' and cod_car='@pCod_car' and H.cod_conciliacion='@pCod_conciliacion'
Group by
H.cod_ext_cue
,H.fec_presentacion
,H.fec_pago
,H.cod_evento
,H.cod_conciliacion
,H.cod_grp_evento

Si yo lo ejecuto asi en el query analizer con datos reales, me anda perfecto, ahora si intento llamarlo como store asi:

exec p_Inventario_detallado_mov @pFec_pres='2006-09-01',
@pFec_clearing='2006-08-02', @pCod_car='1', @pCod_conciliacion='000523'

Me dice
Syntax error converting datetime from character string.
Y yo las fechas las declare como datetime, en que me estoy equivocando??
Graciassssss, sigo por aca!
  #13 (permalink)  
Antiguo 23/02/2007, 08:43
Avatar de Andres95
Colaborador
 
Fecha de Ingreso: diciembre-2004
Mensajes: 1.802
Antigüedad: 19 años, 4 meses
Puntos: 38
Re: sumar o restar resultados

los parametros del select no llevan comillas....
__________________
La sencillez y naturalidad son el supremo y último fin de la cultura...
--
MCTS : SQL Server 2008, .NET Framework 3.5, ASP.NET Applications.
  #14 (permalink)  
Antiguo 23/02/2007, 09:04
 
Fecha de Ingreso: junio-2005
Mensajes: 337
Antigüedad: 18 años, 11 meses
Puntos: 1
Re: sumar o restar resultados

Mas que gracias!! me fueron muy utiles todos tus aportes!!
un beso, Laurys.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 20:58.