Como consultar un listado de personas según antigüedad

Buenas tardes:
Estamos tratando de realizar alguna consulta a las bases de datos postgres y pervasive tratando de obtener un listado de personas según antigüedad docente, para luego ver sus cargos interinos.Encontramos la tabla que contiene la información de antigëdad base pero no alcanzo a ver donde están los años de antigüedad de las personas, suponemos que esto es algo que está embebido en la lógica de las aplicaciones.
¿Existe alguna forma de poder listar a las personas por su antigüedad, docente, no docente o superior?
¿Se puede generar alguna consulta almacenada para tal fin?

Saludos,

Marcelo.

Hola Marcelo, la tabla que contiene las antigüedades es la dh40. La misma esta almacenada como una fecha y para obtener la antigüedad se debe contar los meses entre esa fecha y la del periodo corriente.

En Postgres podrías hacer una función que te devuelve los meses entre dos fechas

SELECT ABS( extract(year from (age(fecha1,fecha2)))*12 + extract(month from (age(fecha1,fecha2))) ) as meses;
y de parametro le pasas los campos fec_mesno (no docente) o fec_mesdo (docente) o fec_messu (superior) de dh40 mas la fecha del periodo corriente.

Espero que te sea de ayuda!
Saludos,
Nico.

Nicolás:
Muchas gracias por contestar. Me tengo que familiarizar para crear funciones con postgreSql. Después les cuento como anduvo

Saludos,

Marcelo.

Nicolás:
Te cuento que dejé una vista almacenada con el siguiente código sql, así luego puedo hacer join con DH03 por ejemplo.

CREATE OR REPLACE VIEW unp_legajosantiguedades AS
SELECT
dh40.nro_legaj,
(extract(year from (age(now(), dh40.fec_mesdo)))*12 + extract(month from(age(now(), dh40.fec_mesdo)))) AS meses_doc ,
(extract(year from (age(now(), dh40.fec_mesno)))*12 + extract(month from(age(now(), dh40.fec_mesno)))) AS meses_nodoc,
(extract(year from (age(now(), dh40.fec_messu)))*12 + extract(month from(age(now(), dh40.fec_messu)))) AS meses_sup
FROM dh40;

ALTER TABLE unp_legajosantiguedades OWNER TO pampa;

Saludos,

Marcelo.