SQL - consulta sql

 
Vista:

consulta sql

Publicado por juan carlos sifuentes (2 intervenciones) el 07/09/2006 19:19:28
miren amigos hago la consulta esta y me salen el siguente error no se q podiria hacer
Servidor: mensaje 512, nivel 16, estado 1, procedimiento mostrar, línea 5
La subconsulta ha devuelto más de un valor, lo que no es correcto cuando va a continuación de =, !=, <, <=, >, >= o cuando se utiliza como expresión.

Servidor: mensaje 512, nivel 16, estado 1, procedimiento mostrar, línea 6
La subconsulta ha devuelto más de un valor, lo que no es correcto cuando va a continuación de =, !=, <, <=, >, >= o cuando se utiliza como expresión.
++++++++++++++++++++++++++++++++

SELECT Entidad_Convocante.NombreEC,Expediente.Nro_dias
FROM Entidad_Convocante INNER JOIN
Base_Administrativa ON Entidad_Convocante.CodigoEC = Base_Administrativa.CodigoEC
INNER JOIN
Expediente ON Base_Administrativa.CodigoBA = Expediente.CodigoBA
where Expediente.Nro_dias=
(select Datediff(dd,Getdate(),Fecha_PresentacionP)
from dbo.Base_Administrativa)
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

RE:consulta sql

Publicado por Isaías (5072 intervenciones) el 07/09/2006 22:44:43
El sub-select te esta regresando MAS de un dato, debes cambiar tu = por un IN

where Expediente.Nro_dias IN
(select Datediff(dd,Getdate(),Fecha_PresentacionP)
from dbo.Base_Administrativa)
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

RE:consulta sql

Publicado por Fran (1 intervención) el 29/04/2010 16:51:49
Hola que tal, creo que el problema lo tienes en esta parte de la query:

where Expediente.Nro_dias=
(select Datediff(dd,Getdate(),Fecha_PresentacionP)
from dbo.Base_Administrativa)

El motor de SQL Intenta comparar Nro_dias con un único valor, pero la select te devuelve más de uno con lo cual es incapaz de comparar. Dos opciones:

1º Si la select sólo te tiene que devolver un valor el problema lo tienes en la tabla Base_Administrativa que tiene datos corruptos
2º Si la select tiene que devolver más de un valor entonces prueba con esto:

where Expediente.Nro_dias IN
(select Datediff(dd,Getdate(),Fecha_PresentacionP)
from dbo.Base_Administrativa)

Simplemente cambiar el operador = por la palabra reservada IN que si que será
capaz de comparar con todos los valores devueltos.

Un saludo
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