Ayuda con select

Disculpa me podrías dar la mano con este select me gustaría encontrar una forma de no repetir 2 veces la misma consulta para obtener los nombres en el case cuando sea diferente a 1 es decir en el else cualquier ayuda que me puedas brindar te la agradeceré mucho
SELECT EMPRESA,NUMERO,NUMERO_DOC,
case (SELECT cliente FROM fadocume WHERE (peingreso.empresa = 001) AND (tipo = peingreso.tipo_doc) AND (numero = peingreso.numero_doc))
when '1' then
(SELECT nombre FROM faeventual WHERE (empresa = peingreso.empresa) AND (tipo = peingreso.tipo_doc) AND (numero = peingreso.numero_doc))
else
(SELECT nombre FROM baproveedor WHERE (empresa = peingreso.empresa) AND (tipo = 'cl') AND (codigo =
(SELECT cliente FROM fadocume WHERE (peingreso.empresa = 001) AND (tipo = peingreso.tipo_doc) AND (numero = peingreso.numero_doc))))
end
FROM peingreso
WHERE (fecha = '12/04/2005')

1 respuesta

Respuesta
1
No existe forma alguna, ya que cada una de las consultas que generas son distintas.
E intentado esto creo que podría ser la solución pero no tengo un inconveniente con este segmento del código
Declare @x varchar(20)
SELECT EMPRESA,NUMERO,NUMERO_DOC,
(select @x=(SELECT cliente FROM fadocume WHERE (peingreso.empresa = 001) AND (tipo = peingreso.tipo_doc) AND numero = peingreso.numero_doc))
case (@x)
when '1' then
(SELECT nombre FROM faeventual WHERE (empresa = peingreso.empresa) AND (tipo = peingreso.tipo_doc) AND (numero = peingreso.numero_doc))
else
(SELECT nombre FROM baproveedor WHERE (empresa = peingreso.empresa) AND (tipo = 'cl') AND (codigo = @x )
end
FROM peingreso
WHERE (fecha = '12/05/2004')
Tengo problema me salen unos errores en cuestión a la variable @x que me indica que no le puedo asignar el valor
Puede ser que en un stored procedure funcione, pero como no tiene valor en forma inmediata sino hasta que lo llenas con una de las extracciones y la usas en el mismo momento puede ser que se pierda, sugiero que sigas con el mismo procedimiento que tenías en un principio.
Lo veo bien, pero es un inconveniente o tienes algún problema con él.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas