RES: [oracle_br] Ajuda com sql posição de estoque por data
Paulo, obrigado fiz o ajuste aqui e funcionou perfeitamente. Obrigado também Delson pela ajuda. Att. Pedro de Souza De: oracle_br@yahoogrupos.com.br [mailto:oracle_br@yahoogrupos.com.br] Em nome de Paulo A. Petruzalek Enviada em: quinta-feira, 14 de junho de 2012 07:50 Para: oracle_br@yahoogrupos.com.br Assunto: Re: [oracle_br] Ajuda com sql posição de estoque por data Se você quer retornar a quantidade na maior data menor ou igual ao parametro do relatório, o filtro da data deve estar na query mais interna (select max(data) where data = '...' and ...). Você chegou bem perto, só falta fazer esse ajuste. Com isso você também vai poder cortar um nível de subquery: SELECT H2.* FROM TABELA1 H2 WHERE H2.DATA = (SELECT MAX(H3.DATA) FROM TABELA1 H3 WHERE H3.CODPRO = H2.CODPRO AND H3.DATA = '14/06/2012' GROUP BY H3.CODPRO); On Thu, 14 Jun 2012 10:37:44 - pedrossjr pedros...@yahoo.com.br mailto:pedrossjr%40yahoo.com.br wrote: Bom dia pessoal, estou quebrando a cabeça aqui mais não consigo gerar este relatório. Preciso trazer a posição de estoque de produtos a partir de uma data informada, segue o exemplo. Tenho a seguinte tabela abaixo: CodPro Qtd Data 1 6 27/05/2012 1 5 30/04/2012 1 4 01/03/2011 2 10 01/06/2012 2 3 03/01/2012 3 80 01/02/2012 3 35 22/07/2011 Quero a data de posição de estoque do dia 25/04/2012, no meu relatório teria que sair assim: CodPro Qtd Data 1 4 01/03/2011 2 3 03/01/2012 3 80 01/02/2012 Outro exemplo, posição do dia 14/06/2012: CodPro Qtd Data 1 6 27/05/2012 2 10 01/06/2012 3 80 01/02/2012 Já tentei vários sql e meu último até o momento foi este mais não funcionou ainda: SELECT H1.* FROM (SELECT H2.* FROM TABELA1 H2 WHERE H2.DATA = (SELECT MAX(H3.DATA) FROM TABELA1 H3 WHERE H3.CODPRO = H2.CODPRO GROUP BY H3.CODPRO) AND H2.QTD 0) H1 WHERE H1.CODPRO 0 AND H1.DATA = '14/06/2012' Alguém já precisou fazer algo deste tipo que possa me dar uma ajudar? Agradeço a todos. Pedro de Souza -- Paulo A. Petruzalek Oracle DBA OCA 11g - OCP PL/SQL http://oraculodosul.blogspot.com ppetruza...@yahoo.com.br mailto:ppetruzalek%40yahoo.com.br _ Nenhum vírus encontrado nessa mensagem. Verificado por AVG - www.avgbrasil.com.br Versão: 2012.0.2178 / Banco de dados de vírus: 2433/5068 - Data de Lançamento: 06/13/12 [As partes desta mensagem que não continham texto foram removidas]
Re: [oracle_br] Ajuda com SQL
Bom dia Thales, Já que vc não tem FK, terá que identificar as tabelas filhas de CLIENTE através do nome da coluna mesmo... A busca seria algo assim: SELECT * FROM all_tab_columns WHERE column_name LIKE '%CODCLIENTE%'; Uma vez identificadas as tabelas filhas, vc verifica os registros órfãos assim: SELECT * FROM tabela_filha a WHERE NOT EXISTS (SELECT NULL FROM cliente b WHERE b.codcliente = a.codcliente); Espero ter ajudado. Att. Marcos Em 26 de agosto de 2011 11:30, Thales Renato Salgado Menezes thalessalg...@yahoo.com.br escreveu: ** Pessoal, Sou novato com SQL e estou com uma dúvida que parece ser simples. Tenho uma tabela de cliente que tem o campo codcli, este campo é sequencial, porém não há uma sequence para fazer o insert de um novo cliente, a aplicação simplismente pega o último código e incrementa mais 1 e insere no banco. O meu problema é que alguns clientes foram apagados e com isso o seu código também, quem modelou este banco não colocou este campo como chave estrangeira em outras tabelas, ou seja, tenho codcliente em outras tabelas de clientes que não existem. codcliente nomecliente 1 cliente x 2 cliente b 4 cliente c 6 cliente d Preciso de uma função ou um sql que pegue os codcliente que não existam, como por exemplo o cliente de código 3 e 5. Seria possível pegar estes códigos? Meu banco é 10g - 10.2.0.4 - Red Hat 5.4 Obrigado pela atenção de vocês. Thales Renato S. Menezes [As partes desta mensagem que não continham texto foram removidas] [As partes desta mensagem que não continham texto foram removidas] -- Atenção! As mensagens do grupo ORACLE_BR são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ -- Apostilas » Dicas e Exemplos » Função » Mundo Oracle » Package » Procedure » Scripts » Tutoriais - O GRUPO ORACLE_BR TEM SEU PROPRIO ESPAÇO! VISITE: http://www.oraclebr.com.br/ Links do Yahoo! Grupos * Para visitar o site do seu grupo na web, acesse: http://br.groups.yahoo.com/group/oracle_br/ * Para sair deste grupo, envie um e-mail para: oracle_br-unsubscr...@yahoogrupos.com.br * O uso que você faz do Yahoo! Grupos está sujeito aos: http://br.yahoo.com/info/utos.html
[oracle_br] ajuda com SQL
Bom dia a todos, pessoal estou comecando a trabalhar com sql e estou com algumas dificuldades, tenho que pegar o num_exeplar que teve mais reservas que esta na tabela reservas e com esse resultado retirar num_edicao que esta na tabela exemplares, estou fazendo dessa forma, mas não esta funcionando, tenho que usar subconsultas pra gerar o resultado, agradeço quem poder me dar uma ajuda. select ex.num_edicao from arruda.exemplares ex where ex.num_exemplar in ( select res.num_exemplar, count(*) from arruda.reservas res where rownum = 1 group by num_exemplar order by 2 ) Adonai
Re: [oracle_br] ajuda com SQL
Acho que isso funciona só não sei se é a melhor forma. select ex.num_edicao from arruda.exemplares ex where ex.num_exemplar = (select num_exemplar from (select res.num_exemplar, count(1) qtde from arruda.reservas res group by res.num_exemplar order by 2 desc ) where rownum = 1 ) Abraço. Adonai S. Canêz wrote: Bom dia a todos, pessoal estou comecando a trabalhar com sql e estou com algumas dificuldades, tenho que pegar o num_exeplar que teve mais reservas que esta na tabela reservas e com esse resultado retirar num_edicao que esta na tabela exemplares, estou fazendo dessa forma, mas não esta funcionando, tenho que usar subconsultas pra gerar o resultado, agradeço quem poder me dar uma ajuda. select ex.num_edicao from arruda.exemplares ex where ex.num_exemplar in ( select res.num_exemplar, count(*) from arruda.reservas res where rownum = 1 group by num_exemplar order by 2 ) Adonai