problemas con where

27/02/2004 - 01:40 por Aragorn \(CL\) | Informe spam
Hola a todos, bueno, les cuento que tengo un problema con un where, lo que
pasa es que me indica que la subconsulta ha devuelto mas de un valor, pero
lo encuentro extraño ya que yo deseo hacer un in al resultado de una
subconsulta.


alguien sabe como puedo hacerlo, o me puede guiar ?


Select Fc.Campo1,
Fc.Campo1,
Fc.Campo1,
From PC_Factvtar Fc
Where Periodo> 0304 and
Periodo< 0306 and
Tvta in ('OF','CO','VT') and
Ginv_Art in (Case @BoolTinv
When '1' Then (Select Art_Cod From
PC_Articulos where Art_Cia = @Cia)
When '' Then (Select Art_Cod From
PC_Articulos where Art_Tipo = 1 and Art_Cia = @Cia)
End) and
FC.NCia = @Cia


Gracias.

Aragorn.

Preguntas similare

Leer las respuestas

#1 Adrianar
27/02/2004 - 02:33 | Informe spam
Hola se me hace que tu problema es que la tabla
PC_Articulos tiene por Art_Cia varios Art_Tipo, por lo que
provoca que el resultado te envie qur tiene mas de un
resultado, revisa que cual es lo que quieres de la tabla
PC_Articulos.
si todos los articulos tienen el mismo Art_Cod puedes
poner (Select top 1 Art_Cod From
PC_Articulos where Art_Cia = @Cia), pero tu revisa que es
lo que necesitas.
Saludos
Hola a todos, bueno, les cuento que tengo un problema con


un where, lo que
pasa es que me indica que la subconsulta ha devuelto mas


de un valor, pero
lo encuentro extraño ya que yo deseo hacer un in al


resultado de una
subconsulta.


alguien sabe como puedo hacerlo, o me puede guiar ?


Select Fc.Campo1,
Fc.Campo1,
Fc.Campo1,
From PC_Factvtar Fc
Where Periodo> 0304 and
Periodo< 0306 and
Tvta in ('OF','CO','VT') and
Ginv_Art in (Case @BoolTinv
When '1' Then


(Select Art_Cod From
PC_Articulos where Art_Cia = @Cia)
When '' Then (Select


Art_Cod From
PC_Articulos where Art_Tipo = 1 and Art_Cia = @Cia)
End) and
FC.NCia = @Cia


Gracias.

Aragorn.



.

Respuesta Responder a este mensaje
#2 ulises
27/02/2004 - 15:47 | Informe spam
La clausula :

Case @BoolTinv
When '1' Then (Select Art_Cod From PC_Articulos where
Art_Cia = @Cia)
When '' Then (Select Art_Cod From
PC_Articulos where Art_Tipo = 1 and Art_Cia = @Cia)
End)

solo permite que los subqueries retornen un valor, ya que
lo espera es el resultado de una expresión y no un
conjunto de resultados.

La forma más sencilla que se me ocurre solucionarlo es
manejarlo a través de un IF y dos SELECT.

if @BoolTinv = '1'
Select Fc.Campo1,
Fc.Campo1,
Fc.Campo1
From PC_Factvtar Fc
Where Periodo> 0304 and
Periodo< 0306 and
Tvta in ('OF','CO','VT') and
Ginv_Art in ( select Art_Cod From PC_Articulos
Where Art_Cia = @Cia ) AND
Fc.NCia = @Cia
else
Select Fc.Campo1,
Fc.Campo1,
Fc.Campo1
From PC_Factvtar Fc
Where Periodo> 0304 and
Periodo< 0306 and
Tvta in ('OF','CO','VT') and
Ginv_Art in ( select Art_Cod From PC_Articulos
Where Art_Cia = @Cia AND
Art_Tipo = 1) AND
Fc.NCia = @Cia

Saludos,
Ulises


Hola a todos, bueno, les cuento que tengo un problema con


un where, lo que
pasa es que me indica que la subconsulta ha devuelto mas


de un valor, pero
lo encuentro extraño ya que yo deseo hacer un in al


resultado de una
subconsulta.


alguien sabe como puedo hacerlo, o me puede guiar ?


Select Fc.Campo1,
Fc.Campo1,
Fc.Campo1,
From PC_Factvtar Fc
Where Periodo> 0304 and
Periodo< 0306 and
Tvta in ('OF','CO','VT') and
Ginv_Art in (Case @BoolTinv
When '1' Then


(Select Art_Cod From
PC_Articulos where Art_Cia = @Cia)
When '' Then (Select


Art_Cod From
PC_Articulos where Art_Tipo = 1 and Art_Cia = @Cia)
End) and
FC.NCia = @Cia


Gracias.

Aragorn.



.

Respuesta Responder a este mensaje
#3 Aragorn \(CL\)
02/03/2004 - 20:37 | Informe spam
Gracias.


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