Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
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
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
Puedes usar un outer join en su loadscript. No sera como su tabla en el ejemplo, pero us muy util en Qlikview
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.
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
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
Muchas Gracias Robert por la respuesta , estoy investigando como se puede usar con tabla straight.
Saludos.
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.
Hola Jaime.
Realice con la función Concat y salio como se quería.
Muchas Gracias por el apoyo y al Foro.
Saludos.