Problemas con condiciones

Hola compatriota me alegra que tengas una posición bastante alta es bueno que el ecuador se deje ver yo también estoy en la posición #3 en java
Amigo creo que esto ha de ser fácil con la experiencias que cuentas en el sql
esgun la @ opción tengo que hacer el filtro pero tengo un imconveniente en el if
Gracias por tu apoyo
Declare @opcion varchar(2), @fechax varchar(10),@empresa varchar(3), @condicion varchar (250)
set @empresa = '001'
set @fechax = '05/05/2005'
set @opcion = 'PE'
if @opcion = 'PE'
set @condicion = 'empresa = @empresa and tipo = @opcion and fecha = @fechax AND num_fac = 1 and anulado = 0'
else
set @condicion = 'empresa = @empresa and tipo = @opcion and fecha = @fechax and anulado = 0'
select empresa,
tipo,
numero,
tipo_doc,
numero_doc,
case cliente
when '1' then
(SELECT nombre FROM faeventual WHERE (empresa = fadocume.empresa) AND (tipo = fadocume.tipo_doc) AND (numero = fadocume.numero_doc ))
else
(SELECT nombre FROM baproveedor WHERE (empresa = fadocume.empresa) AND (tipo = 'cl') AND (codigo = fadocume.cliente) and codigo != '')
end as nombre,
Fecha,
'' as pago,
total,
0 as val_ret,
0 as val_iva
from fadocume where @condicion

1 respuesta

Respuesta
1
Ante todo disculpa la tardanza, y me alegra que estemos en tan buen nivel, te felicito también.
El problema de tu consulta está en que no puedes utilizar WHERE y luego el contenido de la variable @cond. La solución sería la siguiente:
if @opcion = 'PE'
select empresa,
tipo,
numero,
tipo_doc,
numero_doc,
case cliente
when '1' then
(SELECT nombre FROM faeventual WHERE (empresa = fadocume.empresa) AND (tipo = fadocume.tipo_doc) AND (numero = fadocume.numero_doc ))
else
(SELECT nombre FROM baproveedor WHERE (empresa = fadocume.empresa) AND (tipo = 'cl') AND (codigo = fadocume.cliente) and codigo != '')
end as nombre,
fecha,
'' as pago,
total,
0 as val_ret,
0 as val_iva
from fadocume where empresa = @empresa and tipo = @opcion and fecha = @fechax AND num_fac = 1 and anulado = 0
else
select empresa,
tipo,
numero,
tipo_doc,
numero_doc,
case cliente
when '1' then
(SELECT nombre FROM faeventual WHERE (empresa = fadocume.empresa) AND (tipo = fadocume.tipo_doc) AND (numero = fadocume.numero_doc ))
else
(SELECT nombre FROM baproveedor WHERE (empresa = fadocume.empresa) AND (tipo = 'cl') AND (codigo = fadocume.cliente) and codigo != '')
end as nombre,
fecha,
'' as pago,
total,
0 as val_ret,
0 as val_iva
from fadocume where empresa = @empresa and tipo = @opcion and fecha = @fechax and anulado = 0
Es decir debes crear tu sentencia para cada una de las preguntas, es realmente un poco más largo, pero esas son las restricciones del procedimiento almacenado.
Ya solucione ese inconveniente creando una consulta con todos los parámetros necesarios y cambiando sus valores en las condiciones y también ley que puedo guardar en un varchar una sentencia select y después ejecutarlo ahora estoy tratando de hacer eso

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas