Estoy trabajando en una base de datos de contratos en PostgreSQL. Una columna en mi base de datos es el número/identificación del contrato y debe formatearse como ID/Año . Tengo una columna con la fecha de inicio del contrato a partir de la cual debo tomar el año.
En este momento tengo la identificación como una serie que se incrementa automáticamente pero sin la parte del año.
I have ID | DATE_FROM ----------------------- 1 | 2016-10-01 2 | 2016-11-01 3 | 2017-01-01 I need ID | DATE_FROM ----------------------- 1/2016 | 2016-10-01 2/2016 | 2016-11-01 1/2017 | 2017-01-01Soy nuevo en PostgreSQL y no sé cómo hacerlo, pero estoy seguro de que hay una manera de hacerlo solo en PostgreSQL y me alegraría si alguien pudiera ayudar.
Debe cambiar el nombre del campo "FROM" de lo contrario, confundirá la palabra clave FROM
SELECT ID::text || '/' || EXTRACT(YEAR FROM "FROM"), "FROM" FROM yourTable; EDITAR: para reiniciar el contador por año, use ROW_NUMBER()
SELECT ROW_NUMBER() OVER (PARTITION BY EXTRACT(YEAR FROM "FROM") ORDER BY "ID")::text || '/' || EXTRACT(YEAR FROM "FROM"), "FROM" FROM yourTable; Supongo que la ID está en orden cronológico, de lo contrario, puede cambiar el orden de partición a ORDER BY "FROM"