Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > MS SQL Server
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 02-02-2010
Avatar de juanelo
juanelo juanelo is offline
Miembro
 
Registrado: sep 2007
Posts: 1.083
Poder: 18
juanelo Va por buen camino
Sentencia CASE en SQL Server

Que tal a todos,
Pues sigo con mi peregrinar para migrar una aplicacion a SQL Server, y me topo ahora que la sentencia CASE de SQL Server (y creo que la de Firebird tambien) no soportan expresiones boleanas.
En firebird tengo la siguiente sentencia:
Código SQL [-]
SELECT IIF (TABLA.TIPO_MOV >= 51, -1, 1) AS CANT_OP FROM TABLA
Y lo mas logico es traducirlo en Sql Server asi:
Código SQL [-]
Select CASE TABLA.TIPO_MOV WHEN >=51 THEN -1 ELSE 1 END AS CANT_OP FROM TABLA
Pues que creen? que no es posible, ahora como le puedo hacer para que esta sentencia pueda evaluar el ">=51" ?
Cualquier ayuda o direccion es bien recibida, y como siempre, les doy las gracias por tomarse el tiempo de leer este post.
Saludos.
__________________
Ya tengo Firma!

Última edición por juanelo fecha: 02-02-2010 a las 06:03:40.
Responder Con Cita
  #2  
Antiguo 02-02-2010
Avatar de fjcg02
[fjcg02] fjcg02 is offline
Miembro Premium
 
Registrado: dic 2003
Ubicación: Zamudio
Posts: 1.410
Poder: 22
fjcg02 Va camino a la fama
Prueba con

Código SQL [-]
Select CASE WHEN TABLA.TIPO_MOV >=51 THEN -1 ELSE 1 END AS CANT_OP FROM TABLA

Saludos
__________________
Cuando los grillos cantan, es que es de noche - viejo proverbio chino -
Responder Con Cita
  #3  
Antiguo 02-02-2010
Avatar de juanelo
juanelo juanelo is offline
Miembro
 
Registrado: sep 2007
Posts: 1.083
Poder: 18
juanelo Va por buen camino
Muchas gracias fjcg02 por tu respuesta, pero creeme que la probe asi y tampoco, en resumidas cuentas no soporta expresiones boleanas
¿Alguien sabe como poder darle la vuelta a esto?
Gracias
__________________
Ya tengo Firma!
Responder Con Cita
  #4  
Antiguo 02-02-2010
Avatar de ContraVeneno
ContraVeneno ContraVeneno is offline
Miembro
 
Registrado: may 2005
Ubicación: Torreón, México
Posts: 4.738
Poder: 23
ContraVeneno Va por buen camino
pues lo que puso fjcg02 a mi me funciona perfectamente...

¿por qué dices que no te funciona a tí?
__________________

Responder Con Cita
  #5  
Antiguo 02-02-2010
Avatar de juanelo
juanelo juanelo is offline
Miembro
 
Registrado: sep 2007
Posts: 1.083
Poder: 18
juanelo Va por buen camino
Cita:
Empezado por ContraVeneno Ver Mensaje
pues lo que puso fjcg02 a mi me funciona perfectamente...

¿por qué dices que no te funciona a tí?
ContraVeneno,
No se si sea por la version de SQL que uso, la cual es SQL 2005 Express Edition pero me marca el siguiente error:
Código SQL [-]
Msg 102, Level 15, State 1, Line 1
Incorrect syntax near '>'.
Gracias.
__________________
Ya tengo Firma!

Última edición por juanelo fecha: 02-02-2010 a las 16:29:29.
Responder Con Cita
  #6  
Antiguo 03-02-2010
sinalocarlos sinalocarlos is offline
Miembro
 
Registrado: sep 2006
Posts: 152
Poder: 18
sinalocarlos Va por buen camino
la sentencia de fjcg02 funciona correctamente, podrias darnos un ejemplo de como tienes tu consulta ya con esta modificacion?
Responder Con Cita
  #7  
Antiguo 03-02-2010
Avatar de juanelo
juanelo juanelo is offline
Miembro
 
Registrado: sep 2007
Posts: 1.083
Poder: 18
juanelo Va por buen camino
Cita:
Empezado por sinalocarlos Ver Mensaje
la sentencia de fjcg02 funciona correctamente, podrias darnos un ejemplo de como tienes tu consulta ya con esta modificacion?
Que tal sinalocarlos, exactamente igual:
Código SQL [-]
Select CASE WHEN TABLA.TIPO_MOV >=51 THEN -1 ELSE 1 END AS CANT_OP FROM TABLA
Y manda el mesaje que ya puse:
"Msg 102, Level 15, State 1, Line 1
Incorrect syntax near '>'."


PD: La sentencia como la mando fcjg02 ya la habia probado, y como menciono desde el pricipio me da error con cualquier expresion boleana.

Gracias por su respuesta.
__________________
Ya tengo Firma!
Responder Con Cita
  #8  
Antiguo 03-02-2010
Avatar de ContraVeneno
ContraVeneno ContraVeneno is offline
Miembro
 
Registrado: may 2005
Ubicación: Torreón, México
Posts: 4.738
Poder: 23
ContraVeneno Va por buen camino
yo lo probe en SQL server 2000 y 2008 (enterprise) y si funciona

¿será alguna práctica acostumbrada de microsoft de que sus cosas "gratis" están limitadas?
__________________

Responder Con Cita
  #9  
Antiguo 03-02-2010
sinalocarlos sinalocarlos is offline
Miembro
 
Registrado: sep 2006
Posts: 152
Poder: 18
sinalocarlos Va por buen camino
mas raro, ya lo prove en SQL 2000 dev edition, sql 2005 standar edition y en 2005 express y en todos me funciona, aqui la imagen en 2005 express:



Alguien se trajo una ouija?

Última edición por sinalocarlos fecha: 03-02-2010 a las 01:16:18. Razón: editado para corregir eqivocacion en el nombre de una de las versiones
Responder Con Cita
  #10  
Antiguo 03-02-2010
Avatar de juanelo
juanelo juanelo is offline
Miembro
 
Registrado: sep 2007
Posts: 1.083
Poder: 18
juanelo Va por buen camino
Cita:
Empezado por ContraVeneno Ver Mensaje
yo lo probe en SQL server 2000 y 2008 (enterprise) y si funciona

¿será alguna práctica acostumbrada de microsoft de que sus cosas "gratis" están limitadas?
Que tal Contraveneno,
Pues ahi te va lo peor, ya lo probe en SQL server 2005 (no la gratuita) de la empresa en cuestion y nada, la cosa sigue igual, en mi caso yo uso la express edition para desarrollo unicamente.
Como dicen por ahi, MS es como las mujeres, no hay que tratar de entenderlo sino hay que aprender a vivir con el.
__________________
Ya tengo Firma!
Responder Con Cita
  #11  
Antiguo 03-02-2010
Avatar de fjcg02
[fjcg02] fjcg02 is offline
Miembro Premium
 
Registrado: dic 2003
Ubicación: Zamudio
Posts: 1.410
Poder: 22
fjcg02 Va camino a la fama
Hola,
pon la definición de la tabla, por favor.

Saludos
__________________
Cuando los grillos cantan, es que es de noche - viejo proverbio chino -
Responder Con Cita
  #12  
Antiguo 03-02-2010
Avatar de juanelo
juanelo juanelo is offline
Miembro
 
Registrado: sep 2007
Posts: 1.083
Poder: 18
juanelo Va por buen camino
Cita:
Empezado por fjcg02 Ver Mensaje
Hola,
pon la definición de la tabla, por favor.

Saludos
La que tu quieras, de hecho he hecho una base de datos de prueba y lo mismo.

PD: Estoy confirmando una sospecha que tengo y en caso de ser cierta les informo.

Gracias
__________________
Ya tengo Firma!
Responder Con Cita
  #13  
Antiguo 03-02-2010
Avatar de juanelo
juanelo juanelo is offline
Miembro
 
Registrado: sep 2007
Posts: 1.083
Poder: 18
juanelo Va por buen camino
Ya esta!, pues resulta que son los driver dbexpress para firebird y SQL (tambien para FB pasaba!) que adquiri hace una año y que son los que uso en mis aplicaciones. Los actualice y listo!.
Yo siempre dije que MS no es "tan malo"
Muchas gracias a todos en verdad.
__________________
Ya tengo Firma!

Última edición por juanelo fecha: 03-02-2010 a las 17:34:27.
Responder Con Cita
  #14  
Antiguo 26-02-2010
Gatsoft Gatsoft is offline
Registrado
 
Registrado: oct 2006
Posts: 8
Poder: 0
Gatsoft Va por buen camino
Brillante , Brillante , Brillante. ! perfecto SINALOCARLOS !.
No sabes como me ayudaste con este ejemplo.
estuve mas de 2 días buscando en Internet esta solución
hasta que di con ella Gracias a ti.
a mi tampoco me daba ya que lo hacia de la siguiente Forma:

CASE mov>1 WHEN -1 THEN .... ELSE .........
y esa es la forma que se usa solo para IGUALDADES es decir
CASE mov WHEN THEN .....

Pero cuando se hacen comparaciones es de la forma por ti explicada
(las 2 instrucciones juntas)
CASE WHEN mov>1 THEN ..... ELSE .........

Así que muchas gracias nuevamente, pues no daba con la segunda forma.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Case else intercubo Varios 9 19-02-2008 23:03:56
Es posible un Case anidado en Sentencia SQL ? gluglu SQL 3 25-09-2007 20:43:15
sentencia case... patorecalde Oracle 2 07-08-2007 20:55:57
CASE o IFF en SQL dark_c SQL 3 13-01-2007 20:07:33


La franja horaria es GMT +2. Ahora son las 17:43:40.


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
Copyright 1996-2007 Club Delphi