Informix - Case con columna calculada Informix

 
Vista:
sin imagen de perfil

Case con columna calculada Informix

Publicado por Irene Mamani (2 intervenciones) el 22/05/2014 21:55:44
Hola a todos los del foro, necesito ayuda tengo un select
donde tengo una columna calculada ('fechahoy'-fechainicio) as dmora
ahora de acuerdo al numero que salga quiero mediante un case evaluar esa columna
1
2
3
4
5
6
(case dmora
when dmora>0
then "vencido"
when dmora>90
then "ejecucion"
end) as estado

pero me muestra error
ayud porfa
pienso que me da error por que estoy preguntando por la columna calculada, como

Gracias de antemano
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 12
Ha mantenido su posición en Informix (en relación al último mes)
Gráfica de Informix

Case con columna calculada Informix

Publicado por Favian Perez (9 intervenciones) el 23/05/2014 04:54:11
Hola Irene:

En este caso tienes que usar la expresion dentro del case ... en la clausula del when ... ademas te recomiendo un "else" para los criterios que no coincida .. de lo contrario te lanzara un (null)

1
2
3
4
5
6
7
select
   case
       when fechahoy - fechainicio > 0 then "vencido"
       when fechahoy - fechainicio > 90 then "ejecucion"
       else "valor_en_caso_contrario
    end estado
from tabla

Favian.-
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Case con columna calculada Informix

Publicado por irene (1 intervención) el 05/12/2014 19:11:37
hola favian muchas gracias por responder, logre solucionar el problema,
pero ahora tengo una consulta. tengo que hallar la suma de una columna, pero si la columna no tiene datos no me muestra nada select sum(saldo) from.. encontre esto por ahi "sum(NVL(saldos,0))", pero no me funciona, yo quiero 0 si la columna no tiene ningun valor.
Agradesco mucho tu ayuda
Saludos desde Bolivia
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Case con columna calculada Informix

Publicado por Nuno Godinho (1 intervención) el 06/12/2014 19:45:54
Intenta al revés, es decir
select nvl(sum(saldos),0)

Lo probé en nuestro servidor y funcionó sin problemas.
saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 12
Ha mantenido su posición en Informix (en relación al último mes)
Gráfica de Informix

Case con columna calculada Informix

Publicado por Favian (9 intervenciones) el 09/12/2014 03:50:51
Hola Irene:

El detalle se puede estar presentando por la version de informix que puedas tener instalada, e incluso con la version SDK en el cliente o server web ... que no se como lo estes manejando ...

Lo que comenta Nuno es correcto. Aqui solo seria ver si es lo que requieres, ya que en ocasiones informix cuando en su coleccion de datos a sumar, viene un dato NULO, todo se hace NULO ... y en este caso con el NVL(SUM(valor),0) todo se iria a CERO... (No es en todas las versiones de informix,

Como lo quieres hacer tu con el NVL dentro del SUM, seria lo mas correcto ... porque asi solamente el dato NULO lo conviertes a cero y tomarias el resto con su valor correcto .... NULO es diferente de CERO ...

Otra manera es con el case:
select sum(case
when myValor is null then 0
else myValor
end)
from myTabla

En resumen: en mi version 11.50 de Informix, tanto tu SUM, como la de Nuno, operan correctamente .... pero si aun asi te sigue dando lata, prueba con el case ...

Saludos

Favian
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Case con columna calculada Informix

Publicado por Irene (2 intervenciones) el 05/02/2015 19:59:09
Estimado

Nuno Godinho:

muchas gracias por responder, el problema surge por la versión del Informix utizo la version 7.30, pero probando con el case creo que funcionara lo pruebo y te comento.
Gracias nuevamente
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar