----- Mensaje original -----
> De: "jvenegasperu" <jvenegasp...@gmail.com>
> Para: "Postgresql" <pgsql-es-ay...@postgresql.org>
> Enviados: Jueves, 23 de Agosto 2018 11:32:10
> Asunto: Seleccionar columnas por su posicion en lugar de su nombre

> buen dia tengo esta situacion
> 
> como resultado de hacer una consulta cruzada obtengo datos como se ve en la
> imagen adjunta
> 
> donde las fechas eran filas y han pasado a ser columnas.
> 
> ahora el tema es que las fechas siempre van a ser variables mes a mes mi
> pregunta es si existe forma de seleccionar las columnas por su posicion en
> lugar de su nombre algo como cambiar
> 
> select nombre1,nombre2 from tabla;
> 
> por algo quiza como
> 
> select columnid(1), columnid(2) from tabla/vista;
> 
> como podria lograr algo asi seleccionar por la posicion de la columan en
> lugar de su nombre es que no se como se llamara la columna por que es el
> resultado de la columna cruzada

Creo que vas a tener que construirla en pl/pgsql (u otro lenguage, pl/python o 
lo que domines).

Los nombres de los campos podes sacarlos de information_schema.columns:
postgres=# \d test
                            Table "public.test"
 Column |  Type   | Collation | Nullable |             Default              
--------+---------+-----------+----------+----------------------------------
 id     | integer |           | not null | nextval('test_id_seq'::regclass)
 data   | text    |           |          | 

postgres=# select column_name from information_schema.columns where table_name 
= 'test' and ordinal_position=2;
 column_name 
-------------
 data
(1 row)

y una vez que tenes los nombres de la/s columnas segun posicion, te armas un 
string y le mandas un 
EXECUTE '.....'

HTH
Gerardo

Reply via email to