Re: Seleccionar columnas por su posicion en lugar de su nombre

From: Gerardo Herzig - Redes FMED <gherzig(at)fmed(dot)uba(dot)ar>
To: jvenegasperu <jvenegasperu(at)gmail(dot)com>, Postgresql <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: Seleccionar columnas por su posicion en lugar de su nombre
Date: 2018-08-23 15:06:21
Message-ID: 1110246980.68435.1535036781435.JavaMail.zimbra@fmed.uba.ar
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

----- Mensaje original -----
> De: "jvenegasperu" <jvenegasperu(at)gmail(dot)com>
> Para: "Postgresql" <pgsql-es-ayuda(at)postgresql(dot)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

In response to

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Alvaro Herrera 2018-08-23 15:10:16 Re: Seleccionar columnas por su posicion en lugar de su nombre
Previous Message Yessica Brinkmann 2018-08-23 14:56:06 Re: Acerca de módulo contrib a instalar en Postgres