Oracle - if dentro de consulta

   
Vista:

if dentro de consulta

Publicado por asdfg (8 intervenciones) el 19/01/2010 16:10:50
Hola: Como puedo insertar un if en una consulta select. Tengo una consulta select campo1, campo2, if ((len(substr(t.hor_ingres,-4,2))=4) or (len(substr(t.hor_ingres,-3,2))=3)) then, campo 4 where condicion. Si el campo hor_ingres es igual a 4 lea un substr o el otro. No me resulta de esa manera ni de esta otro select campo1, campo2,(if (len(t.hor_ingres)=4) then substr(t.hor_ingres,-4,2);
elseif (len(t.hor_ingres=3))
substr(t.hor_ingres,-3,2);
end if;), campo 4 where condicion

Les agradecería me pudieran ayudar

Saludos
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

RE:if dentro de consulta

Publicado por cibernauta (28 intervenciones) el 19/01/2010 23:38:13
Quisiera ayudarte pero no entiendo tu pregunta:
"...Si el campo hor_ingres es igual a 4..."
Por la logica que pones "len(substr(t.hor_ingres,-4,2))=4" lo que estas midiendo es que si la longitud de lo extraido es igual a 4 y no que el campo sea 4. Bueno, asi lo entiendo yo.

La solucion para select condicionales esta en el uso del DECODE (entre otras opciones) Sugiero que adaptes tu consulta al uso de Decode.

Suerte
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

RE:if dentro de consulta

Publicado por JORGE SANCHEZ (186 intervenciones) el 20/01/2010 00:23:55
SELECT
COL1,
COL2,
CASE
WHEN CONDICIONES THEN
--- SENTENCIAS
WHEN OTRAS_CONDICIONES THEN
--- SENTENCIAS
ELSE
--- SENTENCIAS
END ,
...
COLN
FROM ...
WHERE ...
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

RE:if dentro de consulta

Publicado por asdfg (8 intervenciones) el 20/01/2010 13:49:57
Si probe tb no me resulta la sintaxis esta es mi consulta.

select t.num_corpac, t.num_folio, t.cod_nficha, t.cod_rutpac, t.cod_digpac, t.nom_apepat, t.nom_apemat, t.nom_pacien, t.ind_sexo, t.num_edad, t.ind_edad, t.fec_nacim, t.ind_previs, t.nom_direcc, t.cod_comuna, substr(t.fec_ingres,1,2),substr(t.fec_ingres,4,2), substr(t.fec_ingres,8,2), case when len(t.hor_ingres=4) then substr(t.hor_ingres,-4,2) when len(t.hor_ingres=3) then substr(t.hor_ingres,-3,2) end,substr(t.hor_ingres,-2,2), t.hor_ingres , t.motivo_cons from ur_tregpac t where t.fec_ingres=to_date('18/01/2010','dd/mm/yyyy')

Tambien probé con to_Char en el campo hor_ingres
select t.num_corpac, t.num_folio, t.cod_nficha, t.cod_rutpac, t.cod_digpac, t.nom_apepat, t.nom_apemat, t.nom_pacien, t.ind_sexo, t.num_edad, t.ind_edad, t.fec_nacim, t.ind_previs, t.nom_direcc, t.cod_comuna, substr(t.fec_ingres,1,2),substr(t.fec_ingres,4,2), substr(t.fec_ingres,8,2), case when len(to_char(t.hor_ingres='4')) then substr(t.hor_ingres,-4,2) when len(to_char(t.hor_ingres='3')) then substr(t.hor_ingres,-3,2) end,substr(t.hor_ingres,-2,2), t.hor_ingres , t.motivo_cons from ur_tregpac t where t.fec_ingres=to_date('18/01/2010','dd/mm/yyyy')
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

RE:if dentro de consulta

Publicado por Mariano Hugo (6 intervenciones) el 29/01/2010 16:14:00
Creo que es más cómodo para usar la cláusula DECODE.

SELECT DECODE( valor_referencia , valor_si_a , mostrar_si_a , valor_si_b , mostrar_si_b , .... , valor_si_n , mostrar_si_n , mostrar_sino )
FROM

recibe gran cantidad de Si/MOSTRAR y el SINO es opcional. Si hay varios valores de referencia se pueden contatenar, o anidarse más de un DECODE.

Sds
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

RE:if dentro de consulta

Publicado por roberto (13 intervenciones) el 27/01/2010 20:21:50
proba a ve si te sirve este codigo,

select campo1, campo2,
CASE WHEN (len(t.hor_ingres)=4) then
substr(t.hor_ingres,-4,2)
ELSE (len(t.hor_ingres=3))
substr(t.hor_ingres,-3,2)
END, campo4
where condicion

SALUDOS desde Paraguay
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