SQL Server - CASE WHEN IN

 
Vista:
sin imagen de perfil

CASE WHEN IN

Publicado por Carlos (12 intervenciones) el 25/04/2016 16:46:49
Tengo una duda, estoy realizando una consulta con WHERE y CASE. En uno de mis parametros envio la compañia, existen 5 compañias.

Si envio la compañia 5, me muestra todos los registros, si me envia una compañia diferente de 5, me muestra los registros solamente de la compañia que envio, mi consulta fue esta:

DECLARE @CompanyID

SELECT * FROM PERSONAL where CompanyID IN
(
CASE WHEN @CompanyID != 5 THEN @CompanyID // Si es diferente a 5, muestra datos de una compañia.
ELSE (1,2,3,4,5) END)) // Sino, me muestra datos de todas las compañias.
)

Solo me funciona la sentencia del "@CompanyID != 5", la otra sentencia no me funciona.

Alguna idea? :/
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil

CASE WHEN IN

Publicado por Carlos (12 intervenciones) el 25/04/2016 17:22:58
Solución:

1
2
3
4
5
6
7
8
9
10
11
12
IF ISNULL(@CompanyID,0)=5
	BEGIN
		SET @CompanyAux = NULL
	END
	ELSE
	BEGIN
		SET @CompanyAux = @CompanyID
	END
 
SELECT * FROM PERSONAL WHERE
 
(isnull(@CompanyAux,0)=0 or CompanyID=@CompanyAux)

CASO CERRADO :)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar