SQL Server - subconsulta retorna mas de un valor

   
Vista:

subconsulta retorna mas de un valor

Publicado por Carlos (2 intervenciones) el 27/02/2015 16:07:30
Saludos
estoy haciendo una consulta que me traiga nombre y apellido, estando el nombre en un campo y el apellido en otro mediante una función particiono el campo que llega. el codigo es este

@Can_Nombre VARCHAR(100) -- me trae el valor de la aplicación a buscar eje "juan-villa"
consulta...from candidato c

where can_codigo=can_codigo and

SELECT Can_Codigo from Candidato inner join dbo.Split(@Can_Nombre, '-') on c.Can_Nombre LIKE '%' + strName + '%' group by Can_Codigo --me debe buscar el el campo nombre, se hace lo mismo para apellido.

el split me trae una cadena que se separa por el -
el select me trae mas de un valor, ¿como puedo resolverlo?

Muchas gracias por su ayuda
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

subconsulta retorna mas de un valor

Publicado por Isaias (3180 intervenciones) el 27/02/2015 17:35:56
¿Y en tu aplicativo no puedes pedir el NOMBRE y el APELLIDO por separado?
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

subconsulta retorna mas de un valor

Publicado por Hugo QN (18 intervenciones) el 04/03/2015 21:35:51
hola Carlos con esto te funcionará

CREATE FUNCTION Split2(@string NVARCHAR(MAX), @delimiter CHAR(1))
RETURNS @datos TABLE(strName NVARCHAR(MAX), strLastName NVARCHAR(MAX))
BEGIN
DECLARE @start INT, @end INT, @nobre NVARCHAR(MAX), @apellido NVARCHAR(MAX)

SELECT @start = 1, @end = CHARINDEX(@delimiter, @string)

IF @end = 0 SET @end = LEN(@string) + 1

SET @nobre = SUBSTRING(@string, @start, @end - @start)

SET @start = @end + 1
SET @end = CHARINDEX(@delimiter, @string, @start)

IF @end = 0 SET @end = LEN(@string) + 1

SET @apellido = SUBSTRING(@string, @start, @end - @start)

INSERT INTO @datos(strName, strLastName)
VALUES(@nobre, @apellido)

RETURN
END
GO

SELECT Can_Codigo FROM Candidato C
INNER JOIN dbo.Split2('juan-villa','-')
ON c.Nombres LIKE '%' + strName + '%' AND C.ApellidoPaterno LIKE '%' + strLastName + '%'

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

subconsulta retorna mas de un valor

Publicado por Carlos (2 intervenciones) el 04/03/2015 23:26:15
Muchas gracias

Si de esa manera lo solucione, aunque le puse la misma condición(on) en el where
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