Hi!, Creo que puedes usar unnest para pivotar el array por filas y values() o join lateral para pivotar por columnas.
Postgres 11 | db<>fiddle (dbfiddle.uk)<https://dbfiddle.uk/41kRWZ2I> Fuente: Equivalent to unpivot() in PostgreSQL - Stack Overflow<https://stackoverflow.com/questions/1128737/equivalent-to-unpivot-in-postgresql> Saludos ________________________________ De: Horacio Miranda <hmira...@gmail.com> Enviado: sábado, 6 de julio de 2024 6:07 Para: Ivan Perales M. <ivan.pera...@gmail.com>; Ayuda Esp PostgreSQL <pgsql-es-ay...@postgresql.org> Asunto: Re: Convertir array en columnas Revisa el concepto de pick out. las cajas las abres y generas la lista de materiales que esta adentro de la caja. Esa debiera ser tu unidad, no las cajas. On 6/07/2024 3:42 pm, Ivan Perales M. wrote: Creo saber la respuesta, pero como quiera no se pierde nada con preguntar. La mayoria de reportes que piden los usuarios son a excel y yo normalmente lo genero en programación, consulto a la bd, proceso los datos y genero el archivo de excel a gusto: formulas aqui y alla, me brinco lineas para dejar separaciones, ancho de columnas, formatos condicionales.. todo lo que ocupe. Recientemente me pidieron implementar un BI y he estado viendo opciones, todos sin excepción consultan la información directo de la BD y los resultados los muestran en tablas, algunos dan la opción de transformar esos datos antes de mostrarlos, (pero aun no he llegado a esta parte aun en un par de BI's que estoy analizando). El asunto es que tengo que mostrar un listado, digamos de cuantos movimientos hubo en el mes de los materiales, pero en nuestro sistema un material se divide en Cajas, por lo tanto los movs de inventario son para esas cajas, y aparte de mostrar el numero de movimientos tengo que mostrar todas las cajas que se movimiento, esa consulta la tengo asi: select m.codigo, m.descripcion, count(*), array_agg(distinct e.caja_id order by e.caja_id) from movimiento e left join material m on m.id<http://m.id> = e.material_id where e.fecha between :from and :to group by m.codigo, m.descripcion esto me da la información que necesito, pero las distintas cajas que se movieron aparecen en una sola columna de tipo array que yo mediante codigo la puedo extraer y agregar en columnas en el archivo de excel. La pregunta seria, hay alguna manera en que postgres me separe este array, o mejor digo, alguna función que en lugar de que me cree un array agregue columnas? a sabiendas de que un material podria tener solo 2 cajas que se movieron (serian solo 2 columnas) y habrá materiales que movieron 50 cajas (habría 50 columnas). Si esto no es posible directo en postgres, entonces tendria que buscar si en el BI puede hacerse esto mediante alguna clase de transformación de los datos. Muchas gracias por su tiempo. Saludos -- Lindolfo Iván Perales Mancinas Solo existen 10 tipos de personas en el mundo, las que saben binario y las que no.