Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Firebir y usar "IF" en la clausula "SELECT" (https://www.clubdelphi.com/foros/showthread.php?t=34014)

papulo 24-07-2006 18:59:46

Firebir y usar "IF" en la clausula "SELECT"
 
Pues eso, ¿existe la posibilidad de usar el if dentro de la cláusula SELECT? con firebird, claro está.

Es una pregunta escueta pero clara.

bismarck_sierra 24-07-2006 19:08:57

Que tal

No puedes utilizar IF, pero si CASE:

Código SQL [-]

SELECT fecha, hora, CASE estatus WHEN 'A' THEN 'ACTIVO' WHEN 'C' THEN 'CANCELADO' END  AS estatus FROM ventas

Casimiro Notevi 24-07-2006 22:39:51

Con firebird 1.5 puedes usar coalesce.

Pongamos un ejemplo:

Tenemos una tabla de artículos con varios precios y algunos pueden ser nulos, con la siguiente sentencia devolvería el primer campo no null que encuentre
Código:

select  coalesce(precio1,precio2) as precio from tbArticulos
Si precio1=null y precio2=25

En este caso devolvería 25, el primer campo que no es null.

coalesce es equivalente a case, lo anterior sería algo parecido a esto:

Código:

select case when precio1 is not null then precio1 else precio2 end

papulo 25-07-2006 12:05:48

Requete interesante, pero extendamos la cuestión un poco mas:
-Y si los campos en vez de null, contienen valores varios, como por ejemplo

Código:

Precio1  Precio2  Precio3
-------        -------      -------
    0          123          0
 125            0        12
 454            0          0
 225            0          4
    0          45            0

Y lo que deseo, es coger los valores que no son 0.

¿Es posible? (dentro de firebird siempre, claro esta) :confused:

Gracias por las respuestas. :D

Casimiro Notevi 25-07-2006 13:10:20

Cita:

Empezado por papulo
Requete interesante, pero extendamos la cuestión un poco mas:
-Y si los campos en vez de null, contienen valores varios, como por ejemplo

Código:

Precio1  Precio2  Precio3
-------        -------      -------
    0          123          0
 125            0        12
 454            0          0
 225            0          4
    0          45            0

Y lo que deseo, es coger los valores que no son 0.

¿Es posible? (dentro de firebird siempre, claro esta) :confused:

Gracias por las respuestas. :D

alomejor vale algo así:
Código:

select case when precio1>0 then precio1 else precio2 end

papulo 25-07-2006 18:03:41

Como siempre, muchisisisimas gracias, ha funcionado a la perfección.

Casimiro, re-graciaaaaaaaaaas...

PD: ¿Ya tienes internet en el curro?

Casimiro Notevi 25-07-2006 21:38:04

Cita:

Empezado por papulo
Como siempre, muchisisisimas gracias, ha funcionado a la perfección.

Casimiro, re-graciaaaaaaaaaas...

PD: ¿Ya tienes internet en el curro?



Sí, por fín, tenemos 2 líneas adsl, una con jazztel y otra con Ya, ambas dejaron de funcionar la semana pasada, de nada sirvieron las llamadas a los "servicios técnicos" de ambas empresas (como era de esperar). Finalmente lo hemos resuelto nosotros reseteándolos y metiendo de nuevo los datos.


La franja horaria es GMT +2. Ahora son las 18:58:34.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi