SQL Server - CASE con exist no me entrega bien la consulta

   
Vista:

CASE con exist no me entrega bien la consulta

Publicado por CarlosQ (52 intervenciones) el 17/01/2012 16:09:19
Maestros, necesito su ayuda y orientación por favor

estoy tratando de comparar dos tablas con rut una es una tabla con rut que me envian para consultar si se encuentran alguno de los rut en una tabla LIST_RUT.

estoy tratando de hacer esto

SELECT DISTINCT RUT, 'DATOS' = CASE
WHEN EXISTS(SELECT DISTINCT A.RUT FROM dbo.CONSULTAS A INNER JOIN LIST_RUT B
ON RIGHT('0000000000'+LTRIM(RTRIM(A.RUT)),10) = LTRIM(RTRIM(B.RUT)))
THEN 'SI'
ELSE 'NO'
END
FROM CONSULTAS

es una consulta sencialla pero no me da, me arroja, lo que necesito que me entregue es el listado de RUT de la tabla CONSULTA y en el campo DATOS me insique con un si si esque existe en la tabla LIST_RUT y con un no si no existe, lo que me esta entregando es el listado de rut y a todo le pone si.

por favor

saludos.
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
Imágen de perfil de Isaias

CASE con exist no me entrega bien la consulta

Publicado por Isaias (3180 intervenciones) el 20/01/2012 00:44:37
¿Y si creas una funcion de usuario para verificar el CASE?
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

CASE con exist no me entrega bien la consulta

Publicado por CarlosQ (52 intervenciones) el 20/01/2012 00:56:06
Gracias Isaias y como seria eso? como se verifica un CASE con una funcion


saludos
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

CASE con exist no me entrega bien la consulta

Publicado por Pedro (80 intervenciones) el 21/01/2012 18:58:11
Lo que te quiere decir Isaias (si pensamos igual) es que crees una funcion comun y corriente en el motor.
con el parametro de entrada que seria tu ruta y un RETURN varchar(2)
Entonces la funcion siempre devuelve algo, o SI o NO
y haces tu select asi

select distinct RUT, funcion(RUT) from consultas
Aca la funcion() solo tiene parametros de entrada a la funcion, si no entiendo mal, en tu caso seria consultas.rut.

Es una practica habitual de varios de nosotros , la de crear funciones para resolver algunas cosas , y en muchas oportunidades es mucho mas rapido para el motor que resolver cosas en los queries
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
Imágen de perfil de Isaias

CASE con exist no me entrega bien la consulta

Publicado por Isaias (3180 intervenciones) el 23/01/2012 18:22:17
Es correcto, la funcion seria quien verificara la EXISTENCIA o no de lo que buscas.
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

CASE con exist no me entrega bien la consulta

Publicado por ronviez (1 intervención) el 23/01/2012 20:02:11
podrias intentar de esta otra forma


select RUT,isnull(DATOS,'NO') as DATOS
from (select distinct RUT, 'SI' as DATOS from CONSULTAS) X
left join LIST_RUT B ON RIGHT('0000000000'+LTRIM(RTRIM(X.RUT)),10) = LTRIM(RTRIM(B.RUT))
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