SQL Server - Separa campos en orden

   
Vista:

Separa campos en orden

Publicado por juan (6 intervenciones) el 18/03/2010 19:31:56
Hola a todos alguien me podria apoyar ya que tengo un campo con datos separados por un PIPE, lo que necesito es separarlos por persona primero los 1 y despues los 2 en orden mis campos se muestran asi en una celda:
APELLIDO1 APELLIDO2 NOM1 NOM2 % PERSONA

TREJO|GOMEZ|JUAN|MANUEL|10|1|DE LA MORA|LUNA|MARA|ESCARLET|10|1|PIMENTEL|LOPEZ|MANUEL||10|1|TOLENTINO|JIMENEZ|IVONNE||10|1|LOS PATITOS VERDES SA DE CV|NO APLICA|NO APLICA|NO APLICA|10|2|EMPRESAS LIMPAS SA DE CV|NO APLICA|NO APLICA|NO APLICA|10|2|LOPEZ|NAVARRETE|RENE||10|1|SEGOVIA|ALONZO|EMILIO||10|1|||||0||||||0||

esto es lo que quiero lograr

TREJO|GOMEZ|JUAN|MANUEL|10|1|DE LA MORA|LUNA|MARA|ESCARLET|10|1|PIMENTEL|LOPEZ|MANUEL||10|1|TOLENTINO|JIMENEZ|IVONNE||10|1|LOPEZ|NAVARRETE|RENE||10|1|SEGOVIA|ALONZO|EMILIO||10|1|LOS PATITOS VERDES SA DE CV|NO APLICA|NO APLICA|NO APLICA|10|2|EMPRESAS LIMPAS SA DE CV|NO APLICA|NO APLICA|NO APLICA|10|2||||0||||||0||


alguien podria ayudarme....
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

RE:Separa campos en orden

Publicado por Isaias (3186 intervenciones) el 18/03/2010 22:48:38
Si tu separador es un PIPE, debes saber o conocer la estructura de tu campo, por tanto, con un simple SUBSTRING, apoyandote en la posicion 1 y hasta el PIPE, deberias obtener tu primer dato y asi sucesivamente, no entiendo bien el ejemplo que pones, los veo igual.
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:Separa campos en orden

Publicado por juan (6 intervenciones) el 19/03/2010 01:59:34
ok Isaias, disculpa por no ser tan claro%
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:Separa campos en orden

Publicado por juan (6 intervenciones) el 19/03/2010 02:01:22
ok Isaias, disculpa por no ser tan claro, tengo una celda con todos los campos que te mencione se divide en nombres completos cada uno separado por el pipe ejem. TREJO|GOMEZ|JUAN|MANUEL|10|1 asi hasta tener 10 nombres continuos el ultimo numero es mi identificador, cada 6 campos es un nombre completo:

TREJO|GOMEZ|JUAN|MANUEL|10|1|DE LA MORA|LUNA|MARA|ESCARLET|10|2|PIMENTEL|LOPEZ|MANUEL||10|1

lo que necesito es que me ordene estos campos de esta manera ascendente primero los de identificador 1 y despues los 2

TREJO|GOMEZ|JUAN|MANUEL|10|1|PIMENTEL|LOPEZ|MANUEL||10|1|DE LA MORA|LUNA|MARA|ESCARLET|10|2

No se como podria hacerlo como me comentas, soy un principiante con muchas ganas de lograrlo...
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:Separa campos en orden

Publicado por Pedro (80 intervenciones) el 19/03/2010 18:03:40
Yo haria un SSIS sobre alguna tabla temporal y luego armaria un SP para dejar los datos como vos queres, ya lo tendrias separados y es mucho mas facil, es mas, podrias ejecutar tu SSIS y dejar el final terminado.

Espero te sirva
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:Separa campos en orden

Publicado por juan (6 intervenciones) el 19/03/2010 19:57:43
No se como lograr esto podrias apoyarme con un query????
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:Separa campos en orden

Publicado por jams (75 intervenciones) el 21/10/2010 21:14:19
mas vale tarde que nunca

creas una funcion con valores de tabla de la manera siguiente

ALTER FUNCTION [dbo].[F_Split](@Cadena VARCHAR(max), -- Especifica una cadena así 01,02,03,04
@Delimitador VARCHAR(1) = ',') -- Especifica el delimitador que utiliza la @Cadena (,)
RETURNS @Lista TABLE (id int identity,elemento VARCHAR(100) primary key)
BEGIN
DECLARE @tempElemento VARCHAR(max)
WHILE CHARINDEX(@Delimitador,@Cadena,0) <> 0
BEGIN
SELECT @tempElemento = RTRIM(LTRIM(SUBSTRING(@Cadena,1,CHARINDEX(@Delimitador,@Cadena,0)-1))), @Cadena=RTRIM(LTRIM(SUBSTRING(@Cadena,CHARINDEX(@Delimitador,@Cadena,0)+LEN(@Delimitador),LEN(@Cadena))))
IF LEN(@tempElemento) > 0 and charindex('_',@tempElemento) = 0
INSERT INTO @Lista SELECT @tempElemento
END
IF LEN(@Cadena) > 0
INSERT INTO @Lista SELECT @Cadena -- Put the last item in
RETURN
END

despues la implementas asi

select * from dbo.F_Split ('uno|dos|tres|cuatro|','|') order by 1

Saludos y Suerte
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:Separa campos en orden

Publicado por juan (6 intervenciones) el 22/10/2010 16:00:35
Que tal jams, este proceso lo estuve generando con codigo en excel y era bastante lento, con este query lo hago en segundos, muchas gracias por la ayuda, solo tuve que modificarlo un poco, gracias y hasta luego.
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