Consulta con dos campos máximos

Iniciado por novalida, 3 Julio 2012, 20:16 PM

0 Miembros y 2 Visitantes están viendo este tema.

novalida

Hola!!!

llevo un par de días dando vueltas a una consulta que en su día no supe cómo hacerla. Supongo que se realizaría con un GROUP BY aunque así no soy capaz  y por subconsultas no sé si no veo la solución o es que me he encabezonado en hacerlas mal :S

Si en una tabla tengo tres campos:


  • campo_valor
  • num_mes
  • anyo

Me gustaría obtener en una consulta los valores de campo_valor en los que la fecha sea la mayor en la que existan valores.

El problema que tengo es que cuando un año (campo anyo) no está completo, por ejemplo 2012, el valor máximo de mes (num_mes) no sería 12, como en el caso de un año que sí tuviera valores para el mes 12, como por ejemplo 2011.

No sé si me he explicado bien, pero llevo dándole vueltas a esto y no doy con la solución.

No pido la consulta, porque esto no es una tarea ni nada parecido, sino más bien para mejorar mi autoformación, pero agradecería que alguien pudiera darme alguna pista.
La solución que en su día utilicé fue mediante un bucle por código, pero me gustaría aprender esa consulta dado que creo que sería más elegante.


Muchas gracias y un saludo!! :)

GenR_18

Podrías usar la clausula WHERE con operadores < o > .

También darnos ejemplos de cómo lo estás haciendo estaría perfecto.
Suerte.

novalida

Hola!!!
Perdón por el retraso pero no he estado disponible dede hace un tiempo.

He encontrado una solución y creo que es correcta:




Select anyo, mes, valor from tabla where mes =
(Select max(mes) from tabla where anyo =
(select max (anyo) from tabla where condicional = condicion1))



No obstante me parce un poco aparatotosa al llevar una subconsulta dentro de otra, por lo que agradecería si alguien pudiera decirme si se podría hacer mediante agrupación GROUP BY.


Saludos!!!

novalida

Me respondo a mí mismo.... :S

Al final no es así, puesto que si hay una condición, una cuarta columna en la tabla sobre la que filtrar la selección, se seleccionarían todos los resultados para ese mes y ese anyo, independientemente del valor indicado en la columna de condicional.


¿¿Alguien puede arrojar un poco de luz sobre la consulta???


Muchas gracias!!! :)