Ver Mensaje Individual
  #6 (permalink)  
Antiguo 02/01/2012, 20:20
Avatar de huesos52
huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: Agrupar por Rango de Edades

Este post es similar al que comparte mario heredia.

http://www.forosdelweb.com/f100/como...a-edad-720984/

En una sola consulta quedaría

Código SQL:
Ver original
  1. SELECT FLOOR(months_between(sysdate, to_date('&&fecha','YYYY-MM-DD'))/12) || ' Años ' ||
  2.        FLOOR(MOD(months_between(sysdate, to_date('&&fecha','YYYY-MM-DD')),12)) || ' Meses ' ||
  3.        FLOOR((MOD(months_between(sysdate, to_date('&&fecha','YYYY-MM-DD')),12) - FLOOR(MOD(months_between(sysdate, to_date('&fecha','YYYY-MM-DD')),12)))*30) || ' Dias' AS edad
  4. FROM dual;

La razón por la que se generan números negativos es por que las funciones to_date y to_char realiza operaciones entre las fechas basada en el siglo comprendido entre 1950 y 2049.

Estas seguro que la fecha que tienes almacenada es inferior a 1950? fec_nacimiento que tipo de dato tiene?
Cuando ejecutas
Código SQL:
Ver original
  1. SELECT
  2. e.cod_socio,
  3. e.fec_nacimiento,
  4. to_char(e.fec_nacimiento,'YYYY-MM-DD') AS fecha
  5. FROM soc_socio e
  6. WHERE e.cod_empresa = '001'
  7. AND e.cod_sucursal = '003'
  8. AND e.tip_estado = 'A'
  9. AND e.fec_nacimiento < to_date('1950-01-01','YYYY-MM-DD')

te retorna valores?

saludos
__________________
Without data, You are another person with an opinion.
W. Edwads Deming