tengo una consulta como esta:consulta para encontrar el primer y el segundo valor más grande de un grupo
SELECT
DATEPART(year,some_date),
DATEPART(month,some_date),
MAX(some_value) max_value
FROM
some_table
GROUP BY
DATEPART(year,some_date),
DATEPART(month,some_date)
Esto devuelve una tabla con: año, el mes, el valor más alto para el mes.
me gustaría modificar la consulta de modo que pudiera obtener: año, el mes, el valor más alto para el mes, el segundo valor más grande para el mes en cada fila.
Me parece que las soluciones conocidas como "TOP 2", "NOT IN TOP 1" o una subselección no funcionarán aquí.
(a ser muy específico - estoy usando SQL Server 2008.)
Cualquier ayuda apreciada, THX.
Sí, esta es definitivamente una solución de trabajo, gracias. Creo que hay varias soluciones similares que usan combinaciones, pero todavía me pregunto (o mejor dicho, simplemente tengo curiosidad) si hay alguna sin ellas. – Helena
Me encontré con problemas similares a lo largo de los años y también me preguntaba si existe una solución más simple (sin combinaciones tal vez), pero no pude corregirla. Y a medida que resulta la solución de unión, aunque parezca un error, funcione perfectamente y lo suficientemente rápido. – skajfes
@Helena: por cierto vote y/o acepte la respuesta si cree que es útil, y bienvenido a stackoverflow – skajfes