Ir para conteúdo

Arquivado

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

Jony Peterson

Mostrar a maior data de cada entrada

Recommended Posts

Prezados boa tarde.

 

Eu fiz a seguinte consulta

 

 

SELECT PROCESSOS.NPROCESSO, FASE.FASE,TIPO.TIPO, FASES.DATA
FROM PROCESSOS 
INNER JOIN (FASE INNER JOIN (TIPO INNER JOIN FASES ON TIPO.CODTIPO = FASES.CODTIPO) ON FASE.CODFASE = FASES.CODFASE) ON PROCESSOS.NPROCESSO = FASES.NPROCESSO
ORDER BY FASES.DATA DESC

 

 

 

Onde a mesma me retornar todos o processos ordenando pela maior data

 

PROCESSO FASE TIPO DATA
1001 FINAL PLANO 19/09/2013

1002 ELABORACAO PLANO 10/07/2012

1003 CONCESSAO RELATORIO 25/05/1999

 

Sendo que pode ocorrer de um mesmo processo ter diversas fases, pois ele banco de dados guarda todo histórico do processo.

 

PROCESSO FASE TIPO DATA
1001 FINAL PLANO 19/09/2013

1001 ELABORACAO PLANO 10/09/2013

1001 CONCESSAO RELATORIO 20/08/2013

 

Eu queria demonstrar a apenas ultima fase de cada processo, ou seja, a maior data de cada processo.

 

Do mais grato desde já pela ajuda.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vinicius boa tarde

 

Mas eu fiz o que você falou e não deu certo. Seria assim?

 

SELECT PROCESSOS.NPROCESSO, FASE.FASE, TIPO.TIPO, Max(FASES.DATA)
FROM TIPO INNER JOIN (FASE INNER JOIN (PROCESSOS INNER JOIN FASES ON PROCESSOS.NPROCESSO = FASES.NPROCESSO) ON FASE.CODFASE = FASES.CODFASE) ON TIPO.CODTIPO = FASES.CODTIPO

GROUP BY PROCESSOS.NPROCESSO, FASE.FASE, TIPO.TIPO, FASES.DATA

 

Pois quando eu deixo apenar o GROUP BY PROCESSOS.NPROCESSO, está dando erro e pedo para entrar com as outras funções agregadoras.

Compartilhar este post


Link para o post
Compartilhar em outros sites


SELECT PROCESSOS.NPROCESSO, FASE.FASE, TIPO.TIPO, Max(FASES.DATA)

FROM TIPO INNER JOIN (FASE INNER JOIN (PROCESSOS INNER JOIN FASES ON PROCESSOS.NPROCESSO = FASES.NPROCESSO) ON FASE.CODFASE = FASES.CODFASE) ON TIPO.CODTIPO = FASES.CODTIPO

 

GROUP BY PROCESSOS, FASE, TIPO

Compartilhar este post


Link para o post
Compartilhar em outros sites

Agora rodou mas ainda não está na solução que estou querendo, ver o resultado:

 

 

PROCESSO_FASE

NPROCESSO FASE TIPO Expr1003

1001 Pesquisa Pesquisa 05/10/1945

1001 Pesquisa Pesquisa Positivo 07/10/1947

1001 Final Publicada 25/06/1949

1001 Concessão Aproveitamento 14/11/1947

1001 Concessão Protocolizado 06/11/1948

1002 Concessão Renovado 24/04/1948

1002 Concessão Pesquisa 27/10/1945

1002 Elaboração Parcial 11/12/1947

1002 Final Pesquisa 27/04/1950

1002 Elaboração Publicada 21/08/1962

1003 Elaboração Plano 23/06/1951

1003 Elaboração Protocolizado 27/09/1955

1003 Concessão Pesquisa 22/07/1968

1003 Concessão Final 20/07/1970

1003 Final Publicada 03/11/1978

 

 

Resultado Esperado

 

 

PROCESSO_FASE

NPROCESSO FASE TIPO Expr

1001 Final Publicada 25/06/1949

1002 Final Pesquisa 27/04/1950

1003 Final Publicada 03/11/1978

Compartilhar este post


Link para o post
Compartilhar em outros sites

Motta boa tarde

 

Eu não sou um usuário tão avançado assim :sick: , não estou conseguindo fazer este tipo de subselect.
Teria como me ajudar em como ficaria mais ou menos a consulta?

Do mais grato desde já.

Compartilhar este post


Link para o post
Compartilhar em outros sites

+ou-

 

select PROCESSO,FASE,TIPO,DATA
from processos p1
where p1.data = (select max(DATA)
                 from processos p2
                 where p2.processo = p1.processo)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Motta boa tarde

 

Agora rodou mas mostrou o processo com data mais atual, segue como fiz

 

SELECT PROCESSOS.NPROCESSO, FASE.FASE, TIPO.TIPO, FASES.DATA


FROM PROCESSOS INNER JOIN (FASE INNER JOIN (TIPO INNER JOIN FASES ON TIPO.CODTIPO = FASES.CODTIPO) ON FASE.CODFASE = FASES.CODFASE) ON PROCESSOS.NPROCESSO = FASES.NPROCESSO


WHERE FASES.DATA = (SELECT MAX(FASES.DATA) FROM PROCESSOS INNER JOIN (FASE INNER JOIN (TIPO INNER JOIN FASES ON TIPO.CODTIPO = FASES.CODTIPO) ON FASE.CODFASE = FASES.CODFASE) ON PROCESSOS.NPROCESSO = FASES.NPROCESSO)

 

O que está errado?

 

Do mais grato desde já

Compartilhar este post


Link para o post
Compartilhar em outros sites

Motta bom dia

 

Consegui resolver. Pois o Inner Join da FASES.DATA é feito para eu poder relacionar a data do processo com a data de sua ultima atualização por isso adicionei do Where. Segue como ficou o código:

 

SELECT PROCESSOS.NPROCESSO, FASE.FASE, TIPO.TIPO, FASES.DATA
FROM PROCESSOS INNER JOIN (FASE INNER JOIN (TIPO INNER JOIN FASES ON TIPO.CODTIPO = FASES.CODTIPO) ON FASE.CODFASE = FASES.CODFASE) ON PROCESSOS.NPROCESSO = FASES.NPROCESSO
WHERE FASES.DATA = (SELECT MAX(FASES.DATA) FROM FASES WHERE PROCESSOS.NPROCESSO = FASES.NPROCESSO)

 

A.jr e Vinicius muito obrigado pela ajuda;.

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.