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

Si el campo es negativo poenr el resultado en otro campo

Estas en el tema de Si el campo es negativo poenr el resultado en otro campo en el foro de Mysql en Foros del Web. hola gente, estoy renegando con esta consulta, mi idea es poenr un if dentro del sql pero me da Error tengo una tabla asi id, ...
  #1 (permalink)  
Antiguo 18/06/2009, 00:29
Avatar de aldo1982  
Fecha de Ingreso: noviembre-2004
Ubicación: Santa Fe (Argentina) Colon F.C
Mensajes: 1.362
Antigüedad: 19 años, 5 meses
Puntos: 6
Si el campo es negativo poenr el resultado en otro campo

hola gente, estoy renegando con esta consulta, mi idea es poenr un if dentro del sql pero me da Error

tengo una tabla asi

id, importe, cantidad

el importe peude ser positivo como negativo, entonces encesito hacer algo asi

Código:
select id,  cantidad,
if (importe >0) then sum(importe)   end if as positivo
if (importe < 0) then sum(abs(importe))  end if as negativo
bu espero me haya podido ahcer entender.


salu2 y gracias
__________________
LA MUERTE ESTÁ TAN SEGURA DE VENCER QUE NOS DA TODA UNA VIDA DE VENTAJA
  #2 (permalink)  
Antiguo 18/06/2009, 01:58
 
Fecha de Ingreso: junio-2009
Mensajes: 5
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: Si el campo es negativo poenr el resultado en otro campo

podrias probrar usando la funcion CASE

te quedaria algo asi

SELECT id, cantidad, CASE WHEN (importe >0) THEN SUM(importe) ELSE SUM(ABS(importe)) END

No tengo como probarla ahora, pero creo que la sintaxis esta bien.

Saludos.
  #3 (permalink)  
Antiguo 18/06/2009, 02:04
Avatar de aldo1982  
Fecha de Ingreso: noviembre-2004
Ubicación: Santa Fe (Argentina) Colon F.C
Mensajes: 1.362
Antigüedad: 19 años, 5 meses
Puntos: 6
Respuesta: Si el campo es negativo poenr el resultado en otro campo

no, me tira error :(


CASE WHEN (importe >0) THEN SUM(importe) as positivo ELSE SUM(ABS(importe) as negativo) END
__________________
LA MUERTE ESTÁ TAN SEGURA DE VENCER QUE NOS DA TODA UNA VIDA DE VENTAJA
  #4 (permalink)  
Antiguo 18/06/2009, 07:14
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: Si el campo es negativo poenr el resultado en otro campo

A nivel de consulta esa no es la sintaxis aldo.

Código sql:
Ver original
  1. SELECT id,  cantidad,
  2. IF(importe >0,SUM(importe),SUM(abs(importe))) AS suma
  3. FROM tabla

La sintaxis de darkzs también la veo bien... que error te tira?

Prueba y nos cuentas.
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #5 (permalink)  
Antiguo 18/06/2009, 07:15
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
Puntos: 300
Respuesta: Si el campo es negativo poenr el resultado en otro campo

Un truquillo. Hay otras formas, claro.
Código sql:
Ver original
  1. SELECT IF (numero >=0, 'positivo','negativo')dato, SUM(abs(numero))cantidad FROM tu_tabla GROUP BY dato

Huesos52, se me ha adelantado otra vez. ;)

Última edición por jurena; 18/06/2009 a las 08:13
  #6 (permalink)  
Antiguo 18/06/2009, 16:37
Avatar de aldo1982  
Fecha de Ingreso: noviembre-2004
Ubicación: Santa Fe (Argentina) Colon F.C
Mensajes: 1.362
Antigüedad: 19 años, 5 meses
Puntos: 6
Respuesta: Si el campo es negativo poenr el resultado en otro campo

BUENAS y no tan buenas jajaja

me funciona eso, pero necesito que no lo ahga con sum()

lo que necesito es debe (importe > 0) y haber (importe<0)

o sea que sin GROUP BY

me explico ?

if (importe > 0, as debe)
if (importe < 0, as haber)

entonces me tiraria lso registros asi

id descripcion_prod debe haber
1 encendedor 0 0.25
2 caca 0.25 0


espero poder explicarme bien.

salu2 y gracias
__________________
LA MUERTE ESTÁ TAN SEGURA DE VENCER QUE NOS DA TODA UNA VIDA DE VENTAJA
  #7 (permalink)  
Antiguo 19/06/2009, 00:10
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
Puntos: 300
Respuesta: Si el campo es negativo poenr el resultado en otro campo

SELECT id, descripcion_prod, cantidad, IF( importe >0, importe, 0 ) haber, IF( importe <0, abs( importe ) , 0 ) debe FROM tabla

en caso de que el total lo hicieras con la cantidad por importe
SELECT id, descripcion_prod, cantidad, IF( importe >0, importe*cantidad, 0 ) haber, IF( importe <0, abs( importe *cantidad) , 0 ) debe FROM tabla
  #8 (permalink)  
Antiguo 19/06/2009, 04:49
Avatar de aldo1982  
Fecha de Ingreso: noviembre-2004
Ubicación: Santa Fe (Argentina) Colon F.C
Mensajes: 1.362
Antigüedad: 19 años, 5 meses
Puntos: 6
De acuerdo Respuesta: Si el campo es negativo poenr el resultado en otro campo

Cita:
Iniciado por jurena Ver Mensaje
SELECT id, descripcion_prod, cantidad, IF( importe >0, importe, 0 ) haber, IF( importe <0, abs( importe ) , 0 ) debe FROM tabla

en caso de que el total lo hicieras con la cantidad por importe
SELECT id, descripcion_prod, cantidad, IF( importe >0, importe*cantidad, 0 ) haber, IF( importe <0, abs( importe *cantidad) , 0 ) debe FROM tabla
gracias, funciona de 10.

mis agradecimientos cordiales :)
__________________
LA MUERTE ESTÁ TAN SEGURA DE VENCER QUE NOS DA TODA UNA VIDA DE VENTAJA
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 22:27.