----- Mensaje original -----
> De: "jvenegasperu" <[email protected]>
> Para: "Postgresql" <[email protected]>
> 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