Ajuda com SQL (Postgres)

16/06/2005

0

Pessoal, estou com um problema com um sql que não sei nem por onde começar. Tenho uma tabela de tramitações de processos e preciso que o sql me retorne a [b:e778267106]última[/b:e778267106] tramitação de [b:e778267106]cada[/b:e778267106] processo e ainda o expedidor, a situação do processo e a data. A minha tabela é mais ou menos assim:
cd_tramite(serial), nr_tipo, dt_ano, cd_processo (os 3 campos formam o número do processo), cd_expedidor, dt_expedicao e cd_situacao. Se eu fizer um group by, como vou saber se ele pegou a última tramitação do processo? E ainda por cima, como vou pegar os outros dados que preciso? Se alguém souber como me ajudar, eu agradeço muito.

Abraço,
Juliana.


Jupedra

Jupedra

Responder

Posts

16/06/2005

Jupedra

Olha, o último tramite de cada processo eu consegui, só não sei como fazer agora para trazer os outros dados relativos aquele tramite da tabela. Consegui trazer o último tramite com esse sql:
select nr_tipo, dt_ano, cd_processo, max(cd_tramite) from tb_tramite group by nr_tipo, dt_ano, cd_processo order by nr_tipo, dt_ano, cd_processo
Mas e agora, como faço pra trazer o expedidor, a situacao e a data que estão na mesma tabela?


Responder

18/06/2005

Bon Jovi

nao sei se entendi bem..., mas poderia ser assim:

select nr_tipo, dt_ano, cd_processo, cd_tramite
from tb_tramite
where cd_tramite = (select max(coalesce(max(tr2.cd_tramite), 0)) from tb_tramite tr2)
order by nr_tipo, dt_ano, cd_processo

cd_tramite sendo primary key sozinho (chave nao-composta).

coalesce é só pra evitar de trazer NULL se nao encontrar nada


Responder

18/06/2005

Bon Jovi

corrigindo coalesce:

select nr_tipo, dt_ano, cd_processo, cd_tramite
from tb_tramite
where cd_tramite = (select coalesce(max(tr2.cd_tramite), 0) from tb_tramite tr2)
order by nr_tipo, dt_ano, cd_processo


Responder

18/06/2005

Bon Jovi

Nao tinha lido a 1º msg direito, era o sono.. Vc teria q usar group by sim... e numa visao dentro da query.

select cd_tramite, nr_tipo, dt_ano, cd_processo, cd_expedidor, dt_expedicao, cd_situacao
from tb_tramite, 
  (
   select coalesce(max(tr2.cd_tramite), 0) as tr2cd_tramite, 
   tr2.nr_tipo as tr2nr_tipo, 
   tr2.dt_ano as tr2dt_ano, 
   tr2.cd_processo as tr2cd_processo
   from tb_tramite tr2
   group by tr2.nr_tipo, tr2.dt_ano, tr2.cd_processo
  ) viewtr2
where cd_tramite = viewtr2.tr2cd_tramite



Responder

20/06/2005

Jupedra

Menino, vc é um gênio, muito bom, era bem isso que eu precisava, vou usar um monte esse sql. Obrigada!


Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar