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

[SOLUCIONADO] Duda query en ORACLE

Estas en el tema de Duda query en ORACLE en el foro de Oracle en Foros del Web. Buenas, tengo una duda a la hora de mapear una query que tengo en mysql a oracle Es algo tan sencillo como SELECT IF (1=1,1,2) ...
  #1 (permalink)  
Antiguo 14/10/2015, 04:52
 
Fecha de Ingreso: abril-2013
Mensajes: 36
Antigüedad: 11 años
Puntos: 0
Duda query en ORACLE

Buenas, tengo una duda a la hora de mapear una query que tengo en mysql a oracle

Es algo tan sencillo como

SELECT

IF (1=1,1,2)


En oracle me obliga a poner el FROM si o si y lo que quiero es que en función del resultado de una query, se ejecute una y otra. Sería algo así

SELECT IF (subconsulta1=1,subconsulta2,subconsulta3)

Como os comento, en mysql funciona perfectamente en oracle no tengo narices. Se que con PL-SQL se puede hacer perfectamente pero donde tengo que implementar la consulta QlikView no me deje ejecutar PL-SQL.

A ver si me podéis echar una manita

Muchas gracias!
  #2 (permalink)  
Antiguo 14/10/2015, 12:25
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: Duda query en ORACLE

En vez de IF utiliza la sentencia CASE WHEN.
En este enlace puedes ver ejemplos de su uso.

saludos
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #3 (permalink)  
Antiguo 19/10/2015, 03:35
 
Fecha de Ingreso: abril-2013
Mensajes: 36
Antigüedad: 11 años
Puntos: 0
Respuesta: Duda query en ORACLE

Cita:
Iniciado por huesos52 Ver Mensaje
En vez de IF utiliza la sentencia CASE WHEN.
En este enlace puedes ver ejemplos de su uso.

saludos
Asi es como lo tengo implementado en PL-SQL pero sigo teniendo el mismo problema. El select en oracle me obliga a usar la sentencia FROM, cuando yo no la necesito. Lo que quiero poner en oracle es esto

Código SQL:
Ver original
  1. SELECT
  2.  
  3. CASE ( SUBCONSULTA_1 >1)
  4. THEN
  5. SUBCONSULTA_2
  6. ELSE
  7. SUBCONSULTA_3
  8. END

Sin tener que utilizar FROM después de sentencia case.

Gracias!

Última edición por gnzsoloyo; 19/10/2015 a las 04:57
  #4 (permalink)  
Antiguo 19/10/2015, 05:00
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Duda query en ORACLE

En Oracle es obligaorio usar FROM con toda sentencia SELECT. Si lees el manual (e incluso todos los tutoriales), verás que en todos los casos semejantes al tuyo se invoca un "FROM dual".
"DUAL" es una tabla dummie, falsa o virtual, que Oracle usa para cumplir con el requisito indicado, pero que no existe. Se usa como simulación.
Tu query simplemente debería ser así:
Código SQL:
Ver original
  1. SELECT
  2.     (CASE ( SUBCONSULTA_1 >1) THEN
  3.         SUBCONSULTA_2
  4.     ELSE
  5.         SUBCONSULTA_3
  6.     END) resultado
  7. FROM dual;
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 19/10/2015, 08:19
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: Duda query en ORACLE

Exacto!
No lo hubiera dicho en mejores palabras.
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #6 (permalink)  
Antiguo 20/10/2015, 02:50
 
Fecha de Ingreso: abril-2013
Mensajes: 36
Antigüedad: 11 años
Puntos: 0
Respuesta: Duda query en ORACLE

Cita:
Iniciado por gnzsoloyo Ver Mensaje
En Oracle es obligaorio usar FROM con toda sentencia SELECT. Si lees el manual (e incluso todos los tutoriales), verás que en todos los casos semejantes al tuyo se invoca un "FROM dual".
"DUAL" es una tabla dummie, falsa o virtual, que Oracle usa para cumplir con el requisito indicado, pero que no existe. Se usa como simulación.
Tu query simplemente debería ser así:
Código SQL:
Ver original
  1. SELECT
  2.     (CASE ( SUBCONSULTA_1 >1) THEN
  3.         SUBCONSULTA_2
  4.     ELSE
  5.         SUBCONSULTA_3
  6.     END) resultado
  7. FROM dual;

Eso es lo que estaba buscando, no sabia que existiera tal tabla.

Muchas gracias!
  #7 (permalink)  
Antiguo 20/10/2015, 15:22
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Duda query en ORACLE

No existe. Es una simulación implementada en Oracle para cumplir con el estándar.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: query, sql
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 11:45.