Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 
Not applicable

Varios Registros en una fila

Muy buenas Dias

Tengo un problema , tengo dos archivos uno de Nombre y Otra de Direcciones que los archivos se relacionan por Cod y Doc , en la tabla de direcciones hay varias direcciones , lo que quiero es que se concatenen las direcciones en una sola fila , como en el Ejemplo

Tabla Nombres

Cod     Doc         Nom

1      41948191   Manuel

2      41948191   Carlos

3      88888888    Juan

4      77777777    Pedro

Tabla Direcciones

Cod     Doc          Direcc

1      41004491 Los cedros

1      41004491 Yanahuara

1      41004491 casa blanca

2      88888888 cayma

2      88888888 umacollo

Resultados ( Poner las direcciones en una sola fila separado por comas ,

Cod     Doc              Nombre                     Direcc

1       41004491       Manuel          Los cedros,Yanahuara,casa blanca

2        88888888      Juan             cayma,umacollo

Muchas Gracias por el apoyo

1 Solution

Accepted Solutions
jaimeaguilar
Partner - Specialist II
Partner - Specialist II

Hola,

con la función de agregación concat puedes concatenar todos los valores de la dirección para cada persona. Lo puedes hacer desde el script o directo en el objeto que quieras desplegar.

En el script sería algo así:

Tabla:

LOAD

Cod,

Doc,

Nom,

Concat(distinct Direcc, ',') as Direcc //concatena las direcciones y separa los valores con una coma

from tabla_origen

group by Cod, Doc, Nom; //si lo haces en el script, debes usar group by

Se usa el group by porque todas las funciones de agregación (sum, count, max, etc) que se utilizan en el script necesitan llevar el group by para que la tabla totalice la agregación por todos los campos presentes en la tabla.

También tienes la opción de hacerlo directamente en el objeto. En ese caso tu expresión sería de igual forma concat(distinct Direcc, ','). Como nota adicional, la función concat puede utilizar cualquier símbolo como separador de los valores. En la ayuda puedes ver más información de como funciona Concat,

De esta forma tu objeto final quedaría de la forma que estás buscando, es decir todas las direcciones asociadas a una misma persona en una sola fila,

saludos

View solution in original post

7 Replies
Not applicable
Author

Puedes usar un outer join en su loadscript.  No sera como su tabla en el ejemplo, pero us muy util en Qlikview

Not applicable
Author

Ante todo Muchas Gracias Robert por la respuesta rapido , en el load lo considerare el outer join , pero como hago para concatenar las direcciones en una sola fila .

Saludos.

Not applicable
Author

Si esto en una tabla pivot no es suficiente, puedes crear una tabla straight con tres dimensions de Cod, Doc, Nombre y usar set analysis con concat where los nombres son iguales

jaimeaguilar
Partner - Specialist II
Partner - Specialist II

Hola,

con la función de agregación concat puedes concatenar todos los valores de la dirección para cada persona. Lo puedes hacer desde el script o directo en el objeto que quieras desplegar.

En el script sería algo así:

Tabla:

LOAD

Cod,

Doc,

Nom,

Concat(distinct Direcc, ',') as Direcc //concatena las direcciones y separa los valores con una coma

from tabla_origen

group by Cod, Doc, Nom; //si lo haces en el script, debes usar group by

Se usa el group by porque todas las funciones de agregación (sum, count, max, etc) que se utilizan en el script necesitan llevar el group by para que la tabla totalice la agregación por todos los campos presentes en la tabla.

También tienes la opción de hacerlo directamente en el objeto. En ese caso tu expresión sería de igual forma concat(distinct Direcc, ','). Como nota adicional, la función concat puede utilizar cualquier símbolo como separador de los valores. En la ayuda puedes ver más información de como funciona Concat,

De esta forma tu objeto final quedaría de la forma que estás buscando, es decir todas las direcciones asociadas a una misma persona en una sola fila,

saludos

Not applicable
Author

Muchas Gracias Robert por la respuesta , estoy investigando como se puede usar con tabla straight.

Saludos.

Not applicable
Author

Ante todo Muchas Gracias Jaime , me parece un buena idea realizar con el concat, voy a investigar como se usa esta expresión , espero que salga.

Saludos.

Not applicable
Author

Hola Jaime.

Realice con la función Concat y salio como se quería.

Muchas Gracias por el apoyo y al Foro.

Saludos.