Hiccup 0 Denunciar post Postado Abril 9, 2015 Boa tarde, Estou com uma dificuldade com a função MAX(). Olhei outros tópicos, mas não consegui encontrar algum que me ajudasse na solução. Eu preciso fazer uma consulta, combinando duas tabelas, que me retorne a linha mais atual. Eu montei o script abaixo: SELECT MAX(NFE.DT_EMISSAO), NFE.CHAVE_ORIGEM, STATUS.STATUS FROM NFE_DOF_STATUS STATUS, NFE_DOF NFE WHERE STATUS.NFE_ID = NFE.ID AND STATUS.SERVICO = 'EMISSAO' AND NFE.TIPO <> '0' AND NFE.CHAVE_ORIGEM = '72324351001' group by NFE.CHAVE_ORIGEM, STATUS.STATUS Ele me retorna duas linhas: DT_EMISSAO CHAVE_ORIGEM STATUS 02/abr/15 72324351001 REJEITADA_SEFAZ 07/abr/15 72324351001 AUTORIZADA Se eu retirar a coluna STATUS, ele retorna apenas uma linha, mas aí é que está o problema, essa é a coluna mais importante para a minha análise: SELECT MAX(NFE.DT_EMISSAO), NFE.CHAVE_ORIGEM FROM NFE_DOF_STATUS STATUS, NFE_DOF NFE WHERE STATUS.NFE_ID = NFE.ID AND STATUS.SERVICO = 'EMISSAO' AND NFE.TIPO <> '0' AND NFE.CHAVE_ORIGEM = '72324351001' group by NFE.CHAVE_ORIGEM DT_EMISSAO CHAVE_ORIGEM 07/abr/15 72324351001 Alguém poderia me ajudar a entender o que está acontecendo e se tem uma forma de listar apenas uma linha mantendo a coluna STATUS?! Até mais, Hiccup Compartilhar este post Link para o post Compartilhar em outros sites
Hiccup 0 Denunciar post Postado Abril 9, 2015 Boa tarde,Estou com uma dificuldade com a função MAX(). Olhei outros tópicos, mas não consegui encontrar algum que me ajudasse na solução.Eu preciso fazer uma consulta, combinando duas tabelas, que me retorne a linha mais atual. Eu montei o script abaixo: SELECT MAX(NFE.DT_EMISSAO), NFE.CHAVE_ORIGEM, STATUS.STATUS FROM NFE_DOF_STATUS STATUS, NFE_DOF NFE WHERE STATUS.NFE_ID = NFE.ID AND STATUS.SERVICO = 'EMISSAO' AND NFE.TIPO <> '0' AND NFE.CHAVE_ORIGEM = '72324351001' group by NFE.CHAVE_ORIGEM, STATUS.STATUS Ele me retorna duas linhas:DT_EMISSAO CHAVE_ORIGEM STATUS02/abr/15 72324351001 REJEITADA_SEFAZ07/abr/15 72324351001 AUTORIZADASe eu retirar a coluna STATUS, ele retorna apenas uma linha, mas aí é que está o problema, essa é a coluna mais importante para a minha análise: SELECT MAX(NFE.DT_EMISSAO), NFE.CHAVE_ORIGEM FROM NFE_DOF_STATUS STATUS, NFE_DOF NFE WHERE STATUS.NFE_ID = NFE.ID AND STATUS.SERVICO = 'EMISSAO' AND NFE.TIPO <> '0' AND NFE.CHAVE_ORIGEM = '72324351001' group by NFE.CHAVE_ORIGEM DT_EMISSAO CHAVE_ORIGEM 07/abr/15 72324351001 Alguém poderia me ajudar a entender o que está acontecendo e se tem uma forma de listar apenas uma linha mantendo a coluna STATUS?!Até mais,Hiccup Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Abril 9, 2015 Não tem jeito pois o max vai agrupar para cada linha distinta , tendo mais de um STATUS vão aparecer duas linhas. Atente que a data também interfere. Compartilhar este post Link para o post Compartilhar em outros sites
Hiccup 0 Denunciar post Postado Abril 10, 2015 Olá Motta,Bom, então vou pensar em outra forma para montar o relatório.Obrigado pela ajuda ... :) Até mais, Hiccup PS.: Por favor, o tópico já pode ser fechado! Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Abril 10, 2015 http://forum.imasters.com.br/topic/500259-select-com-max-com-valores-diferentes/ Todavia veja se o link acima te ajuda. Compartilhar este post Link para o post Compartilhar em outros sites
AlexITWV 0 Denunciar post Postado Abril 11, 2015 Testei, mas não deu =/ Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Abril 12, 2015 Tente algo assim .... SELECT * FROM NFE_DOF_STATUS STATUS, NFE_DOF NFE WHERE STATUS.NFE_ID = NFE.ID AND STATUS.SERVICO = 'EMISSAO' AND NFE.TIPO <> '0' AND NFE.CHAVE_ORIGEM = '72324351001' AND NFE.DT_EMISSAO = (SELECT MAX(NFE.DT_EMISSAO) FROM NFE_DOF_STATUS STATUS2, NFE_DOF NFE2 WHERE STATUS2.NFE_ID = NFE2.ID AND STATUS2.SERVICO = STATUS.SERVICO AND NFE2.TIPO <> '0' AND NFE2.CHAVE_ORIGEM = NFE.CHAVE_ORIGEM) Compartilhar este post Link para o post Compartilhar em outros sites
Hiccup 0 Denunciar post Postado Abril 14, 2015 Olá Motta, Deu certo, tive que mexer mais um pouco para atingir o resultado desejado, mas a sua lógia foi quem resolver o problema. Muito obrigado!!! :clap: Acho que vou ter que estudar bastante lógica agora que estou iniciando no PL/SQL ... :) Até mais, Hiccup Compartilhar este post Link para o post Compartilhar em outros sites