uso del case

05/06/2008 - 18:52 por Luis Mata | Informe spam
Alguna forma de poder hacer esto y que arroje un solo valor

declare @vnombre varchar(90)
set @vnombre = 'SUP0-Suspendido'--Aqui puede ser 'SUB0-Subsidio' ó
'DMB0-Descanso Medico'
set @obvs = CASE charindex('SUP0',@vnombre) when 1 then 'SUP0' end

set @obvs = CASE charindex('SUB0',@vnombre) when 1 then 'SUB0' end

set @obvs = CASE charindex('DME0',@vnombre) when 1 then 'DME0' end

En todo caso si ni es ninguno de los anteriores se busca si esta de
vacaciones en la tabla vacaciones con u count y @sivaca = 1 sino es 0

set @obvs = CASE @sivaca when 1 then 'VAC0' end

Al final que @obvs nunca quede vacio
aqui solo evalua el ultimo valor y si no es queda vacio



Att
Luis Mata Figueroa
Área Informática
Centro Cerámico Las Flores SAC
RPC: 993597297
TEL: 6174613
 

Leer las respuestas

#1 Jorge Gallego
06/06/2008 - 11:58 | Informe spam
Hola Luis

Puedes realizar tu consulta como la que sigue. Quiero pensar que el valor de
@sivaca los has obtenido proviamente en otra consulta, de ahí que lo
establezca previamente.
Además la variable @vnombre supongo que no contendrá en ningún caso al mismo
tiempo varios valores entre: SUP0, SUB0 o DME0.

declare @obvs varchar(4)
declare @vnombre varchar(90)
declare @sivaca int

set @sivaca = 1
set @vnombre = 'SUP0-Suspendido'--Aqui puede ser 'SUB0-Subsidio' ó
'DMB0-Descanso Medico'

SELECT @obvs CASE
WHEN charindex('SUP0',@vnombre) = 1 THEN 'SUP0'
WHEN charindex('SUB0',@vnombre) = 1 THEN 'SUB0'
WHEN charindex('DME0',@vnombre) = 1 THEN 'DME0'
ELSE CASE @sivaca WHEN 1 THEN 'VAC0'
ELSE 'OTRO' END
END
PRINT @obvs

Saludos

Jorge

"Luis Mata" wrote in message
news:
Alguna forma de poder hacer esto y que arroje un solo valor

declare @vnombre varchar(90)
set @vnombre = 'SUP0-Suspendido'--Aqui puede ser 'SUB0-Subsidio' ó
'DMB0-Descanso Medico'
set @obvs = CASE charindex('SUP0',@vnombre) when 1 then 'SUP0' end

set @obvs = CASE charindex('SUB0',@vnombre) when 1 then 'SUB0' end

set @obvs = CASE charindex('DME0',@vnombre) when 1 then 'DME0' end

En todo caso si ni es ninguno de los anteriores se busca si esta de
vacaciones en la tabla vacaciones con u count y @sivaca = 1 sino es 0

set @obvs = CASE @sivaca when 1 then 'VAC0' end

Al final que @obvs nunca quede vacio
aqui solo evalua el ultimo valor y si no es queda vacio



Att
Luis Mata Figueroa
Área Informática
Centro Cerámico Las Flores SAC
RPC: 993597297
TEL: 6174613



Preguntas similares