CASE anidados...

14/09/2004 - 17:43 por Jose Osman Sansuste Tapia | Informe spam
Primero que nada muchas gracias por tomarse el tiempo de
leer mi pregunta.

Yo estoy intentando hacer una consulta pero me tope con un
problema, me veo en la necesidad de hacer un CASE anidado,
pero me da error y quisiera saber si SQL Server soporta
esta caracteristica.

Si fuera asi, por favor podrian pasarme un ejemplo de la
forma correcta de usarlo.

Muchas gracias...

Preguntas similare

Leer las respuestas

#1 Tinoco
14/09/2004 - 18:18 | Informe spam
Hola.

Todo depende que se necesita. Si es un case para tomar
varios rumbos, debes cambiar esto a IF anidados, pero si
es para dar varias soluciones, puedes utilizar el CASE
dentro de una instruccion Select

Hermilson T.
MCDBA, MCSD
Colombia

Primero que nada muchas gracias por tomarse el tiempo de
leer mi pregunta.

Yo estoy intentando hacer una consulta pero me tope con


un
problema, me veo en la necesidad de hacer un CASE


anidado,
pero me da error y quisiera saber si SQL Server soporta
esta caracteristica.

Si fuera asi, por favor podrian pasarme un ejemplo de la
forma correcta de usarlo.

Muchas gracias...
Respuesta Responder a este mensaje
#2 Javier Loria
14/09/2004 - 19:21 | Informe spam
Hola:
Si se soportan los CASE Anidados:
=SELECT CASE
WHEN MONTH(GETDATE())=9 THEN
CASE
WHEN DAY(GETDATE()) THEN 'OK'
ELSE 'NOK'
END
ELSE 'NOK'
END

= Rara vez son necesarios ya que es mas facil poner la condicion externa
de forma repetida lo cual hace mas legible la sentencia, y en SQL no
deteriora el desempeno como si lo hace en un funcion procedimiental.

Javier Loria
Costa Rica
Se aprecia la inclusion de DDL (CREATE, INSERTS, etc.)
que pueda ser copiado y pegado al Query Analizer.
La version de SQL y Service Pack tambien ayuda

"Jose Osman Sansuste Tapia" wrote in message
news:1c6701c49a71$852876a0$
Primero que nada muchas gracias por tomarse el tiempo de
leer mi pregunta.

Yo estoy intentando hacer una consulta pero me tope con un
problema, me veo en la necesidad de hacer un CASE anidado,
pero me da error y quisiera saber si SQL Server soporta
esta caracteristica.

Si fuera asi, por favor podrian pasarme un ejemplo de la
forma correcta de usarlo.

Muchas gracias...
Respuesta Responder a este mensaje
#3 Jose Osman Sansuste Tapia
14/09/2004 - 19:23 | Informe spam
Olvide mencionar que mi CASE esta dentro del WHERE de un
SELECT, es decir es algo similar a esto:

SELECT *
FROM Tabla
WHERE Campo1 = @Campo1
AND CASE Campo2
WHEN '1' THEN
CASE ... WHEN ... THEN ... ELSE ... END
WHEN '2' THEN
CASE ... WHEN ... THEN ... ELSE ... END
ELSE
...
END

Cualquier ayuda es bienvenida... muchas gracias.


Hola.

Todo depende que se necesita. Si es un case para tomar
varios rumbos, debes cambiar esto a IF anidados, pero si
es para dar varias soluciones, puedes utilizar el CASE
dentro de una instruccion Select

Hermilson T.
MCDBA, MCSD
Colombia

Primero que nada muchas gracias por tomarse el tiempo de
leer mi pregunta.

Yo estoy intentando hacer una consulta pero me tope con


un
problema, me veo en la necesidad de hacer un CASE


anidado,
pero me da error y quisiera saber si SQL Server soporta
esta caracteristica.

Si fuera asi, por favor podrian pasarme un ejemplo de la
forma correcta de usarlo.

Muchas gracias...



.

Respuesta Responder a este mensaje
#4 Tinoco
14/09/2004 - 21:16 | Informe spam
Esto no se puede utilizar en SQL Server, porque el Where
no recibe un resultado como lo haria el THEN o el ELSE.

Realmente no entiendo para que lo necesitas, pero puedes
utilizar condiciones agrupadas...

WHERE (Campo2 = '1' and Campo3 = 1) or (Campo2 = '2' and
Campo3 = 0)

Olvide mencionar que mi CASE esta dentro del WHERE de un
SELECT, es decir es algo similar a esto:

SELECT *
FROM Tabla
WHERE Campo1 = @Campo1
AND CASE Campo2
WHEN '1' THEN
CASE ... WHEN ... THEN ... ELSE ... END
WHEN '2' THEN
CASE ... WHEN ... THEN ... ELSE ... END
ELSE
...
END

Cualquier ayuda es bienvenida... muchas gracias.


Hola.

Todo depende que se necesita. Si es un case para tomar
varios rumbos, debes cambiar esto a IF anidados, pero




si
es para dar varias soluciones, puedes utilizar el CASE
dentro de una instruccion Select

Hermilson T.
MCDBA, MCSD
Colombia

Primero que nada muchas gracias por tomarse el tiempo






de
leer mi pregunta.

Yo estoy intentando hacer una consulta pero me tope






con
un
problema, me veo en la necesidad de hacer un CASE


anidado,
pero me da error y quisiera saber si SQL Server soporta
esta caracteristica.

Si fuera asi, por favor podrian pasarme un ejemplo de






la
forma correcta de usarlo.

Muchas gracias...
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida