Estou tendo um problema de registros duplicados quando o ultimo campo a direita esta populado.
Retorno do select:
DFFUJDATA DIA ENTRADA SAIDA OCOR AHN DFMTVCODIGO DFMTVDESCRICAO
12/12/2005 Seg-Nor 13:53 22:02
13/12/2005 Ter-Nor 13:55 22:16 00:16 16 300 ADICIONAL NOTURNO
13/12/2005 Ter-Nor 13:55 22:16 00:16 16 835 BANCO HORAS POSITIVO ( + )
14/12/2005 Qua-Nor 13:53 22:01
15/12/2005 Qui-Nor 13:54 22:00
Veja que esta repetindo a linha DFFUJDATA (13/12/2005) até o campo 'AHN' , pois o DFMTVCODIGO e DFMTVDESCRICAO são distintos.
O que eu preciso era deixar em "blanco" (pular linha) quando não houvesse registro para o campo.
Retorno do select que necessito:
DFFUJDATA DIA ENTRADA SAIDA OCOR AHN DFMTVCODIGO DFMTVDESCRICAO
12/12/2005 Seg-Nor 13:53 22:02
13/12/2005 Ter-Nor 13:55 22:16 00:16 16 300 ADICIONAL NOTURNO
835 BANCO HORAS POSITIVO ( + )
14/12/2005 Qua-Nor 13:53 22:01
15/12/2005 Qui-Nor 13:54 22:00
Ou seja, quando tiver mais de uma linha no campo DFMTVCODIGO e FMTVDESCRICAO, que o select deixe em branco os campos: DFFUJDATA, DIA, ENTRADA, SAIDA, OCOR e AHN, evitando a duplicação de registros iguais.
Abaixo o código:
Select
TO_CHAR (DFFUJDATA, 'DD/MM/YYYY') DFFUJDATA,
initcap(substr(to_char(DFFUJDATA,'day','nls_date_language=portuguese'),1,3)) || '-' || decode(DFTPDCODIGOHOR,07,'Dom',decode(DFTPDCODIGOHOR,01,'Nor',decode(DFTPDCODIGOHOR,02,'Nor',decode(DFTPDCODIGOHOR,03,'Fol',decode(DFTPDCODIGOHOR,04,'Com',decode(DFTPDCODIGOHOR,06,'Pon','Err')))))) || decode(DFTPDCODIGOCAL, 05, '-Fer', null) Dia,
decode(To_char(TO_CHAR(FLOOR(max(decode(DFPONTIPO, 0, DFPILHORA, null))/60)),'00') || ':' ||
TO_CHAR(TO_CHAR(MOD(max(decode(DFPONTIPO, 0, DFPILHORA, null)), 60),'00'), 'FM00'),':',null,
to_char(TO_CHAR(FLOOR(max(decode(DFPONTIPO, 0, DFPILHORA, null))/60)),'00') || ':' ||
TO_CHAR(TO_CHAR(MOD(max(decode(DFPONTIPO, 0, DFPILHORA, null)), 60),'00'),'FM00')) as Marcacoes_Entrada,
decode(To_char(TO_CHAR(FLOOR(max(decode(DFPONTIPO, 1, DFPILHORA, null))/60)),'00') || ':' ||
TO_CHAR(TO_CHAR(MOD(max(decode(DFPONTIPO, 1, DFPILHORA, null)), 60),'00'), 'FM00'),':',null,
to_char(TO_CHAR(FLOOR(max(decode(DFPONTIPO, 1, DFPILHORA, null))/60)),'00') || ':' ||
TO_CHAR(TO_CHAR(MOD(max(decode(DFPONTIPO, 1, DFPILHORA, null)), 60),'00'),'FM00')) as Marcaoes_Saida,
decode(DFMTVCODIGO,078,null,decode(DFMTVCODIGO,null,null,(TO_CHAR(TO_CHAR(FLOOR(max(DFOCOHORAGER) / 60)),'00') || ':' ||
TO_CHAR(TO_CHAR(MOD(max(DFOCOHORAGER), 60),'00'), 'FM00'))))as Ocorrencias,
max(DFOCOHORAGER) ahn_wanderlei,
decode(DFMTVCODIGO,078,null,DFMTVCODIGO) DFMTVCODIGO ,
decode(DFMTVCODIGO,078,null,DFMTVDESCRICAO) DFMTVDESCRICAO
FROM (select distinct A.DFFUJDATA,
B.dfpontipo,
B.dfpilhora,
A.DFTPDCODIGOHOR,
A.DFTPDCODIGOCAL,
C.DFOCOHORAGER,
D.DFMTVCODIGO,
D.DFMTVDESCRICAO
from PFUJFPTO A,
PPONFPTO B,
POCOFPTO C,
PMTVFPTO D
where A.dfepscodigo = B.dfepscodigo (+)
and A.dffuncracha = B.dffuncracha (+)
and A.dffujdata = B.dfpildata (+)
and A.dfepscodigo = C.dfepscodigo (+)
and A.dffuncracha = C.dffuncracha (+)
and A.dffujdata = c.dfocodata (+)
and C.DFMTVCODIGO = D.DFMTVCODIGO(+)
and C.DFEPSCODIGO = D.DFEPSCODIGO(+)
and A.dffuncracha = '000000000052061'
and A.dffujdata between TO_DATE('12/12/2005', 'DD/MM/YYYY') and TO_DATE('11/01/2006', 'DD/MM/YYYY'))
Group by DFFUJDATA, DFTPDCODIGOHOR, DFTPDCODIGOCAL, DFOCOHORAGER, DFMTVCODIGO, DFMTVDESCRICAO
Obrigado!!!!