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

Case When

Estas en el tema de Case When en el foro de SQL Server en Foros del Web. hola, tengo un ligero problema con la sentencia del case when lo que necesito es cambiar dos campos si se cumple la condicion del case, ...
  #1 (permalink)  
Antiguo 04/10/2007, 01:45
 
Fecha de Ingreso: septiembre-2007
Mensajes: 24
Antigüedad: 16 años, 7 meses
Puntos: 0
Pregunta Case When

hola, tengo un ligero problema con la sentencia del case when
lo que necesito es cambiar dos campos si se cumple la condicion del case, pero solo consigo que como mucho me modifique solo un dato

el código es el siguiente:

SELECT first_name AS Nombre, last_name AS Apellido, hora_inicio AS HoraInicio, hora_fin AS HoraFinal, HOUR(hora_fin)-HOUR(hora_inicio) AS HorasTotales, MINUTE(hora_fin)-MINUTE(hora_inicio) AS MinutosTotales, fecha AS Fecha,
CASE
WHEN MINUTE(hora_fin)-MINUTE(hora_inicio)<0
THEN HOUR(hora_fin)-HOUR(hora_inicio)-1 AND MINUTE(hora_fin)-MINUTE(hora_inicio)+60
ELSE MINUTE(hora_fin)-MINUTE(hora_inicio)
END HoraReal
FROM usuario m, tiempo_sesion t
WHERE m.usuario_id = t.usuario_id

con el código asi, solo me selecciona, la hora ya modificada por el case, pero necesito que tambien me saque la solucion de los minutos, y no consigo hacerlo, sabeis si se pueden hacer varios case?? lo he intentado, pero no lo consigo

gracias
  #2 (permalink)  
Antiguo 04/10/2007, 10:44
Avatar de Gabo77  
Fecha de Ingreso: noviembre-2006
Mensajes: 381
Antigüedad: 17 años, 5 meses
Puntos: 6
Re: Case When

Perdon, pero esta consulta en realidad funciona??? perdona mi ignorancia, pero igual nunca lo he intentado....

Código PHP:
SELECT first_name AS Nombrelast_name AS Apellidohora_inicio AS HoraInicio,
             
hora_fin AS HoraFinalHOUR(hora_fin) - HOUR(hora_inicio) AS HorasTotales,
             
MINUTE(hora_fin) - MINUTE(hora_inicio) AS MinutosTotalesfecha AS Fecha,
             CASE
                     
WHEN MINUTE(hora_fin) - MINUTE(hora_inicio) < 0 THEN
                                HOUR
(hora_fin) - HOUR(hora_inicio) - 1
                                
AND
                                
MINUTE(hora_fin) - MINUTE(hora_inicio) + 60
                      
ELSE
                                
MINUTE(hora_fin)-MINUTE(hora_inicio)
             
END HoraReal
FROM usuario m
tiempo_sesion t
WHERE m
.usuario_id t.usuario_id 
Yo he usado mas de 1 Case en una consulta sin ningun problema, tal ves si pones las tablas y nos dices como quieres la salida sea un poco mas fácil de digerir..

Saludos!
__________________
Hicimos un pacto con Dios... El no desarrolla Sistemas y nosotros no hacemos milagros....
  #3 (permalink)  
Antiguo 05/10/2007, 01:15
 
Fecha de Ingreso: septiembre-2007
Mensajes: 24
Antigüedad: 16 años, 7 meses
Puntos: 0
Re: Case When

la consulta asi no funciona bien, ya que solo saca un dato en vez de dos, en el campo. Y como has conseguido que te funcionen varios case en una misma consulta, a mi me da error de sintaxis
  #4 (permalink)  
Antiguo 05/10/2007, 10:58
Avatar de Gabo77  
Fecha de Ingreso: noviembre-2006
Mensajes: 381
Antigüedad: 17 años, 5 meses
Puntos: 6
Re: Case When

Código:
Select Columna1, Columna2,
           Case
               When Columna3 > 1 Then
                   'Mayor que 1'
               Else
                   'No mayor que 1'
           End As Columna3,
           Case
               When Columna4 > 1 Then
                   'Mayor que 1'
               Else
                   'No mayor que 1'
           End As Columna4
From Tabla

Saludos!
__________________
Hicimos un pacto con Dios... El no desarrolla Sistemas y nosotros no hacemos milagros....
  #5 (permalink)  
Antiguo 08/10/2007, 01:52
 
Fecha de Ingreso: septiembre-2007
Mensajes: 24
Antigüedad: 16 años, 7 meses
Puntos: 0
Re: Case When

gracias gabo, has sido de gran ayuda!!!
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 15:24.