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

Sum con condicion

Estas en el tema de Sum con condicion en el foro de Mysql en Foros del Web. Hola como estan? Bueno el problema que tengo es el siguiente. Necesito calcular un valor que sume o reste dependiendo del valor de un campo. ...
  #1 (permalink)  
Antiguo 12/07/2010, 15:37
mgd
 
Fecha de Ingreso: enero-2009
Mensajes: 129
Antigüedad: 15 años, 3 meses
Puntos: 0
Sum con condicion

Hola como estan?
Bueno el problema que tengo es el siguiente.
Necesito calcular un valor que sume o reste dependiendo del valor de un campo.
Los campos involucrados Son monto y tipo y la idea es sumar el campo monto si el campo tipo es = 'S' y restar si el campo tipo = 'R'.

es como si tomáramos un recordset e hiciéramos algo asi


while recorder.eof = false


if rs!tipo = 'S' then
total = total + rs!monto
else
total = total - rs!monto
end if

rs.movenext

wend



seria eso pero que sea como resultado de una consulta
he probado con When case pero no logro entender como ir sumando o restando según indique el campo tipo porque es como si me hicieran falta una variable

Muchas gracias
  #2 (permalink)  
Antiguo 12/07/2010, 15:47
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: Sum con condicion

algo así

Código MySQL:
Ver original
  1. SELECT SUM(IF(condicion='algo','Lo que quieras de ser cierto','loque quieras de ser falso')) FROM tabla;

saludos
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #3 (permalink)  
Antiguo 12/07/2010, 17:53
mgd
 
Fecha de Ingreso: enero-2009
Mensajes: 129
Antigüedad: 15 años, 3 meses
Puntos: 0
Respuesta: Sum con condicion

Esta perfecto, ya lo habia probado con IF pero no sabia como sumar o restar y la solución fue esta

Código MySQL:
Ver original
  1. SELECT SUM(IF(tipo = 'S', + monto, - monto)) FROM cuentahistoria
  2. where codcuenta = 5

Muchas gracias

Etiquetas: sum
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 21:02.