Ajuda com SQL (Postgres)
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.
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
Curtidas 0
Respostas
Jupedra
16/06/2005
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?
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?
GOSTEI 0
Bon Jovi
16/06/2005
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
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
GOSTEI 0
Bon Jovi
16/06/2005
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
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
GOSTEI 0
Bon Jovi
16/06/2005
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
GOSTEI 0
Jupedra
16/06/2005
Menino, vc é um gênio, muito bom, era bem isso que eu precisava, vou usar um monte esse sql. Obrigada!
GOSTEI 0