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
Val: 3.250
Oro
Ha mantenido su posición en SQL Server (en relación al último mes)
Gráfica de SQL Server

subconsulta retorna mas de un valor

Publicado por Isaias (4558 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
sin imagen de perfil
Val: 9
Ha disminuido su posición en 8 puestos en SQL Server (en relación al último mes)
Gráfica de SQL Server

subconsulta retorna mas de un valor

Publicado por Hugo QN (19 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