Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

lesilvajuroliv

Relatório de Idade dos FIlhos em Select

Recommended Posts

Boa tarde,

 

Estou tentando montar um relatório para trazer os filhos até 11 anos, mas o mesmo está dando erro, pois o campo é do tipo char de (8 Bytes).

O resultado que está saindo é 000586 DENISE LOBAT DOS SANTOS XAVIER JULIA LOBAT XAVIER 23/03/2011 acima de 1681 anos F

segue a query:

SELECT A.RB_MAT "MATRICULA",
       B.RA_NOME "NOME",
       A.RB_NOME "DEPENDENTE",
       SUBSTR (A.RB_DTNASC, 7, 2)
       || '/'
       || SUBSTR (A.RB_DTNASC, 5, 2)
       || '/'
       || SUBSTR (A.RB_DTNASC, 1, 4)
          "NASC.",
DECODE ((TO_date (SYSDATE, 'dd/mm/yyyy') - TO_date (A.RB_DTNASC, 'yyyymmdd')),  
    0, '0-11 meses',
    1, '1 ano',
    2, '2-3 anos',
    3, '2-3 anos',
    4, '4-6 anos',
    5, '4-6 anos',
    6, '4-6 anos',
    7, '7-9 anos',
    8, '7-9 anos',
    9, '7-9 anos',
    10, '10-11 anos',
    11, '10-11 anos',
    CONCAT(CONCAT('acima de ',TO_date(SYSDATE, 'dd/mm/YYYY') -TO_date(A.RB_DTNASC, 'yyyymmdd')), ' anos')
    ) as Anos,           A.RB_SEXO "SEXO"
  FROM    SRB030 A
       LEFT JOIN
          SRA030 B
       ON (A.RB_FILIAL = B.RA_FILIAL AND A.RB_MAT = B.RA_MAT)
 WHERE RB_MAT = '000586' AND RB_GRAUPAR = 'F';

att,

Luiz Eduardo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

1) Converta as strings para data

 

2) calcule a idade

 

exemplo

select trunc(sysdate) , to_date('20110505','yyyymmdd')  from dual

TRUNC(SYSDATE) TO_DATE('20110505','YYYYMMDD')
-------------- ------------------------------
29/10/15       05/05/11                       



select Floor(Months_Between(  trunc(sysdate) , to_date('20110505','yyyymmdd') )/12) idade
from dual

     IDADE
----------
         4

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.