Alunos José Rogério do Prado Júni Postado Abril 26, 2022 Alunos Compartilhar Postado Abril 26, 2022 Prezados, bom dia! Estou precisando fazer uma consulta com uma função de agreção MAX(), mas não está me trazendo o resultado desejado. SELECT MAX(PLANILHA), NUMERO_CONTRATO, VALOR FROM CONTRATOS WHERE FILIAL = '18' GROUP BY NUMERO_CONTRATO, VALOR NESTE CASO, NÃO ESTÁ ME TRAZENDO SOMENTE O VALOR MÁXIMO DA PLANILHA. Podem me dar um help? Link para o comentário Compartilhar em outros sites More sharing options...
0 Alunos Pri Postado Abril 28, 2022 Alunos Compartilhar Postado Abril 28, 2022 tem certeza? foi essa query mesmo que você usou? me mostra como ficou o resultado dela SELECT * FROM CONTRATOS C WHERE PLANILHA = (SELECT MAX(PLANILHA) FROM CONTRATOS C2 WHERE C2.FILIAL = C.FILIAL AND C2.NUMERO_CONTRATO = C.NUMERO_CONTRATO) AND C.FILIAL = '18' Pq eu fiz questão de criar a sua tabela e trouxe exatamente o que vc queria Link para o comentário Compartilhar em outros sites More sharing options...
1 Alunos Pri Postado Abril 30, 2022 Alunos Compartilhar Postado Abril 30, 2022 Em 26/04/2022 em 15:06, Pri disse: SELECT * FROM CONTRATOS C WHERE PLANILHA = (SELECT MAX(PLANILHA) FROM CONTRATOS C2 WHERE C2.FILIAL = C.FILIAL AND C2.NUMERO_CONTRATO = C.NUMERO_CONTRATO) AND C.FILIAL = '18' Eu teria que ver a sua planilha pra saber se dessa forma q eu fiz resolveria mesmo oi @José Rogério do Prado Júni, pode marcar essa resposta como correta?Isso ajuda bastante ao pessoal que procura duvidas parecidas a já saber o resultado 1 Link para o comentário Compartilhar em outros sites More sharing options...
0 Alunos Pri Postado Abril 26, 2022 Alunos Compartilhar Postado Abril 26, 2022 SELECT * FROM CONTRATOS C WHERE PLANILHA = (SELECT MAX(PLANILHA) FROM CONTRATOS C2 WHERE C2.FILIAL = C.FILIAL AND C2.NUMERO_CONTRATO = C.NUMERO_CONTRATO) AND C.FILIAL = '18' Eu teria que ver a sua planilha pra saber se dessa forma q eu fiz resolveria mesmo 1 Link para o comentário Compartilhar em outros sites More sharing options...
0 Alunos Michele Postado Abril 26, 2022 Alunos Compartilhar Postado Abril 26, 2022 Olá @José Rogério do Prado Júni! Quando você quer o valor máximo de um campo de forma global , você deve colocar apenas ele nos campos do SELECT, quando você adiciona mais campos você quer dizer que quer o valor máximo para cada ocorrência diferente desses outros campos adicionados. Apenas o número máximo geral: SELECT MAX(PLANILHA) FROM CONTRATOS WHERE FILIAL = '18' Número máximo por contrato: SELECT MAX(PLANILHA), NUMERO_CONTRATO FROM CONTRATOS WHERE FILIAL = '18' GROUP BY NUMERO_CONTRATO E assim sucessivamente. Se você quiser mais campos ou todos da tabela apenas para o valor máximo, neste caso seria como a @Pri colocou acima. Link para o comentário Compartilhar em outros sites More sharing options...
0 Alunos José Rogério do Prado Júni Postado Abril 26, 2022 Autor Alunos Compartilhar Postado Abril 26, 2022 5 horas atrás, Pri disse: SELECT * FROM CONTRATOS C WHERE PLANILHA = (SELECT MAX(PLANILHA) FROM CONTRATOS C2 WHERE C2.FILIAL = C.FILIAL AND C2.NUMERO_CONTRATO = C.NUMERO_CONTRATO) AND C.FILIAL = '18' Eu teria que ver a sua planilha pra saber se dessa forma q eu fiz resolveria mesmo @Pri, muito obrigado. Link para o comentário Compartilhar em outros sites More sharing options...
0 Alunos José Rogério do Prado Júni Postado Abril 26, 2022 Autor Alunos Compartilhar Postado Abril 26, 2022 34 minutos atrás, Michele disse: Olá @José Rogério do Prado Júni! Quando você quer o valor máximo de um campo de forma global , você deve colocar apenas ele nos campos do SELECT, quando você adiciona mais campos você quer dizer que quer o valor máximo para cada ocorrência diferente desses outros campos adicionados. Apenas o número máximo geral: SELECT MAX(PLANILHA) FROM CONTRATOS WHERE FILIAL = '18' Número máximo por contrato: SELECT MAX(PLANILHA), NUMERO_CONTRATO FROM CONTRATOS WHERE FILIAL = '18' GROUP BY NUMERO_CONTRATO E assim sucessivamente. Se você quiser mais campos ou todos da tabela apenas para o valor máximo, neste caso seria como a @Pri colocou acima. @michele, muito obrigado. Link para o comentário Compartilhar em outros sites More sharing options...
0 Alunos José Rogério do Prado Júni Postado Abril 27, 2022 Autor Alunos Compartilhar Postado Abril 27, 2022 41 minutos atrás, José Rogério do Prado Júni disse: @Pri, muito obrigado. A sua query traz o maior valor da planilha, porém ela fixa o valor encontrado para os outros campos. Por exemplo, tenho as colunas: PLANILHA - CONTRATO - VALOR - FILIAL 1 2 300 18 2 2 200 18 1 3 500 18 2 4 600 18 3 4 100 18 Preciso que a consulta me traga os valores: PLANILHA - CONTRATO - VALOR - FILIAL 2 2 200 18 1 3 500 18 3 4 100 18 este deverá ser o resultado. A maior planilha encontrada no contrato, junto com o número do contrato da maior planilha e o valor. Grato. Link para o comentário Compartilhar em outros sites More sharing options...
0 Alunos Michele Postado Abril 27, 2022 Alunos Compartilhar Postado Abril 27, 2022 Olá @José Rogério do Prado Júni! Então, neste seu exemplo você não está retornando apenas linha com o campo MAX do campo PLANILHA, são três valores distintos desse campo. Seguindo esse exemplo enviado, ao pedir que seja retornado apenas o MAX do campo PLANILHA, vai retornar apenas a linha com o valor 3 no campo PLANILHA, pois neste cenário é o MAX deste campo. Também não consegui achar padrão exatamente você precisa para retornar esses valores do resultado esperado, para mim parece um resultado aleatório. Se você quiser o MAX do VALOR para aquela PLANILHA, aí o seu MAX precisa estar no campo VALOR, e não no campo PLANILHA. Se o que você precisa é o MAX do VALOR por PLANILHA, seria algo assim: SELECT PLANILHA, NUMERO_CONTRATO, MAX(VALOR) AS MaiorValor FROM CONTRATOS WHERE FILIAL = '18' GROUP BY PLANILHA, NUMERO_CONTRATO Caso ainda não seja isso, tentar explicar o que você precisa retornar, para tentarmos ver se é possível atender de outra forma ok? Link para o comentário Compartilhar em outros sites More sharing options...
0 Alunos José Rogério do Prado Júni Postado Abril 28, 2022 Autor Alunos Compartilhar Postado Abril 28, 2022 @Pri, valeu demais!! Deu certinho, muito obrigado!!! 1 Link para o comentário Compartilhar em outros sites More sharing options...
0 Alunos José Rogério do Prado Júni Postado Abril 28, 2022 Autor Alunos Compartilhar Postado Abril 28, 2022 Em 27/04/2022 em 09:44, Michele disse: Olá @José Rogério do Prado Júni! Então, neste seu exemplo você não está retornando apenas linha com o campo MAX do campo PLANILHA, são três valores distintos desse campo. Seguindo esse exemplo enviado, ao pedir que seja retornado apenas o MAX do campo PLANILHA, vai retornar apenas a linha com o valor 3 no campo PLANILHA, pois neste cenário é o MAX deste campo. Também não consegui achar padrão exatamente você precisa para retornar esses valores do resultado esperado, para mim parece um resultado aleatório. Se você quiser o MAX do VALOR para aquela PLANILHA, aí o seu MAX precisa estar no campo VALOR, e não no campo PLANILHA. Se o que você precisa é o MAX do VALOR por PLANILHA, seria algo assim: SELECT PLANILHA, NUMERO_CONTRATO, MAX(VALOR) AS MaiorValor FROM CONTRATOS WHERE FILIAL = '18' GROUP BY PLANILHA, NUMERO_CONTRATO Caso ainda não seja isso, tentar explicar o que você precisa retornar, para tentarmos ver se é possível atender de outra forma ok? @michele muito obrigado. com o exemplo da @Pri, ficou certinho. Valeu!! 1 Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
José Rogério do Prado Júni
Prezados, bom dia!
Estou precisando fazer uma consulta com uma função de agreção MAX(), mas não está me trazendo o resultado desejado.
SELECT MAX(PLANILHA), NUMERO_CONTRATO, VALOR FROM CONTRATOS WHERE FILIAL = '18'
GROUP BY NUMERO_CONTRATO, VALOR
NESTE CASO, NÃO ESTÁ ME TRAZENDO SOMENTE O VALOR MÁXIMO DA PLANILHA.
Podem me dar um help?
Link para o comentário
Compartilhar em outros sites
10 respostass a esta questão
Posts Recomendados
Faça login para comentar
Você vai ser capaz de deixar um comentário após fazer o login
Entrar Agora