----- 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