sql >> Base de Datos >  >> RDS >> PostgreSQL

Seleccione el nombre de la columna y el valor de la tabla

Por supuesto, podría escribir una función PL/pgSQL y consultar la tabla de catálogo pg_attribute tú mismo. Pero es mucho más fácil con uno de los siguientes:

JSON

La función row_to_json() proporciona una funcionalidad que va a la mitad del camino. Introducido con Postgres 9.2 :

SELECT row_to_json(t, TRUE) FROM tbl t;

No es necesario que mencione los nombres de las columnas en absoluto, la función los deriva del tipo de tabla.

->Demostración de SQLfiddle.

Pero necesitará json_each_text() de Postgres 9.3 ir hasta el final:

SELECT json_each_text(row_to_json(t)) FROM tbl t;

Para obtener un orden de clasificación como el que muestra:

SELECT (json_each_text(row_to_json(t))).*
FROM   tbl t
ORDER  BY 1, 2;

(No está claro cómo desea ordenar exactamente).
No probado. SQLfiddle aún no proporciona Postgres 9.3.

htienda

Sin embargo, puede hacer lo mismo con el módulo adicional hstore . Disponible desde 8.4 . Instálelo una vez con:

CREATE EXTENSION hstore;

Detalles:
Par de clave-valor en PostgreSQL

Consulta:

SELECT (each(hstore(t))).*
FROM   tbl t
ORDER  BY 1,2;

Eso es todo.
Nuevamente, no hay SQLfiddle, ya que no se pueden instalar módulos adicionales allí.