HSQL - Retornar número que tem o maior código

10 respostas
R

Pessoal, bom dia,

Estou com dificuldades em montar uma query para a seguinte necessidade:

Eu tenho números repetidos para diferentes códigos e preciso retornar somente o número que tem o maior código.
Mais o maior problema é que não quero 1 linha de retorno, preciso que essa query faça isso e me retorne TODOS os números com seus maiores códigos.
Não sei se consegui ser claro…

Nessa query:

SELECT  codigo, numero
       FROM minhaTabela  WHERE numero = '100'
AND codigo  = (SELECT MAX(codigo) FROM minhaTabela WHERE  numero = '100');

consigo recuperar a informação mais informando o número, essa query vai me retornar o numero 100 com seu maior código…
Mais preciso de uma query que me retorne os valores sem precisar informar o número.

10 Respostas

E

Deixa eu ver o que você quer.

Você tem a seguinte tabela:
Numero Codigo
100 123
100 1234
100 12345
200 234
200 2345
200 23456
400 111
400 2222

E você quer uma consulta que volte:
100 12345
200 2345
400 2222

Ou seja, para todos os números que têm códigos, voltar o maior código para cada número

R

Oi entanglement,

É exatamente isso.

E

Infelizmente não estou com um SQL fácil para testar uma query aqui, mas acho que envolve algo com GROUP BY e MAX.

D
SELECT numero, MAX(codigo) FROM minhaTabela GROUP BY numero
R

dan20,

É isso mesmo funcionou, no caso se eu quiser adicionar mais colunas eu tenho que agrupar todas elas?

#EDIT

Fiz um teste aqui se agrupar todas as colunas não vai trazer o resultado esperado, tem outro jeito para que eu posso adicionar mais campos no resultado?

D

qual seria o resultado que você espera?
dá uma olhada nesse link e ver se te ajuda em alguma coisa: http://www.devmedia.com.br/introducao-ao-sql-agrupamento-de-resultados/17008

R

Esperava incluir mais campos no resultado por exemplo:

Codigo Numero Valor Ocorrencia
100 12345 300,00 7
200 2345 100,00 9
400 2222 200,00 8

Os outros campos não precisam ser ordenados…

Pelo que vi pra eu adicionar mais campos tenho que adicionar funções nesses campos?

D

Não necessariamente, você não precisa agrupar as outras colunas, acho que no seu caso é só adicionar na cláusula SELECT mesmo as colunas que deseja e deixar o agrupamento somente pela coluna número

E

Retornando ao problema dele:
Numero Codigo Nome
100 123 Edgard
100 1234 Fabiana
100 12345 Gisele
200 234 Haroldo
200 2345 Inácio
200 23456 Joaquina
400 111 Kátia
400 2222 Leopoldina

E o resultado que você quer é
Numero Codigo Nome
100 12345 Gisele
200 23456 Joaquina
400 2222 Leopoldina

É isso?

R

entanglement,

Novamente, exato…

#EDIT

Lembrando que não necessariamente a coluna nome precisa estar ordenada.

Criado 10 de maio de 2013
Ultima resposta 10 de mai. de 2013
Respostas 10
Participantes 3