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?
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.
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;