Re: [oracle_br] Join com subquery

2015-08-10 Por tôpico dcgercoss...@gmail.com [oracle_br]
Fiz as adequações necessárias às tabelas que precisei usar e funcionou 
direitinho, valeu mesmo.

Re: [oracle_br] Join com subquery

2015-08-10 Por tôpico dcgercoss...@gmail.com [oracle_br]
Valeu André!

Funcionou perfeitamente.

Gratíssimo pela ajuda, 

Daniel.

Re: [oracle_br] Join com subquery

2015-08-07 Por tôpico Andre Santos andre.psantos...@gmail.com [oracle_br]
Daniel

Não testei... veja se funciona:

select l.idL, l.nome, h.idH, h.anoMes, h.descricao
from
(
   select h1.idH, max( h1.anoMes ) as max_AnoMes
   from historicos h1
   where h1.anoMes = 201508
   group by h1.idH
) h1g
join historicos h
   on  h.idH = h1g.idH
   and h.anoMes = h1g.max_AnoMes
join locais l
   on l.idH = h.idH
where l.local  0;

[ ]

André Santos


Em 7 de agosto de 2015 09:14, dcgercoss...@gmail.com [oracle_br] 
oracle_br@yahoogrupos.com.br escreveu:



 Bom dia comunidade!

 Tenho uma tabela que é um histórico, a chave dela é composta por
 id(number) e anoMes(number), ela não é alimentada todo mês de forma que o
 último registro de um id pode ser o mês atual, o início do ano ou qualquer
 mês pra trás. exemplo:
 historicos
 --
 idHanoMesdescricao
 --
 1201508teste1
 1201503teste1
 1201412teste1
 2201505teste2
 2201501teste2
 2201411teste2
 2201408teste2
 --

 select h.idH, h.anoMes, h.descricao
 from historicos h
 where h.idH  0
 and h.anoMes = ( select max( h1.anoMes )
 from historicos h1
 where h1.idH = h.idH
 and h1.anoMes = 201508 );

 resultado
 ---
 idHanoMesdescricao
 ---
 1201508teste1
 2201505teste2
 --

 Até aí tudo certo o problema é quando ligo esta tabela com outra. Exemplo:
 Locais
 --
 idLnomeidH
 --
 1local12
 2local2(null)
 3local31
 4local4(null)
 --

 select l.idL, l.nome, h.idH, h.anoMes, h.descricao
 from locais l
 left join historicos h
 on h.idH = l.idH
 and h.anoMes = ( select max( h1.anoMes )
 from historicos h1
 where h1.idH = h.idH
 and h1.anoMes = 201508 )
 where l.local  0;

 resultado esperado
 ---
 idLnomeidHanoMesdescricao
 ---
 1  local12 201505teste2
 2  local2(null)(null)   (null)
 3  local31 201508teste1
 4  local4(null)(null)   (null)
 

 Neste caso o oracle não aceita a subquery, aí pergunto se existe um jeito
 de fazer esta consulta? Neste exemplo são só duas tabelas, mas no real
 preciso ligar mais tabelas e consequentemente a complexidade da query
 aumenta.

 Desde já agradeço a colaboração de todos,

 Daniel.


 



[oracle_br] Join com subquery

2015-08-07 Por tôpico dcgercoss...@gmail.com [oracle_br]
Bom dia comunidade!

Tenho uma tabela que é um histórico, a chave dela é composta por id(number) e 
anoMes(number), ela não é alimentada todo mês de forma que o último registro de 
um id pode ser o mês atual, o início do ano ou qualquer mês pra trás. exemplo:
historicos
--
idHanoMesdescricao
--
1201508teste1
1201503teste1
1201412teste1
2201505teste2
2201501teste2
2201411teste2
2201408teste2
--

select h.idH, h.anoMes, h.descricao 
from historicos h 
where h.idH  0 
and h.anoMes = ( select max( h1.anoMes ) 
from historicos h1 
where h1.idH = h.idH 
and h1.anoMes = 201508 );

resultado 
---
idHanoMesdescricao
---
1201508teste1
2201505teste2
--

Até aí tudo certo o problema é quando ligo esta tabela com outra. Exemplo:
Locais
--
idLnomeidH
--
1local12
2local2(null)
3local31
4local4(null)
--

select l.idL, l.nome, h.idH, h.anoMes, h.descricao
from locais l
left join historicos h
on h.idH = l.idH 
and h.anoMes = ( select max( h1.anoMes ) 
from historicos h1 
where h1.idH = h.idH 
and h1.anoMes = 201508 )
where l.local  0;

resultado esperado
---
idLnomeidHanoMesdescricao
---
1  local12 201505teste2
2  local2(null)(null)   (null)
3  local31 201508teste1
4  local4(null)(null)   (null)


Neste caso o oracle não aceita a subquery, aí pergunto se existe um jeito de 
fazer esta consulta? Neste exemplo são só duas tabelas, mas no real preciso 
ligar mais tabelas e consequentemente a complexidade da query aumenta.

Desde já agradeço a colaboração de todos, 

Daniel.