j'ai une requête comme ceci:requête pour trouver la première et la plus grande valeur SECOND d'un groupe
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)
Ceci retourne une table avec: années, mois, la plus grande valeur pour le mois.
Je souhaite modifier la requête pour que je puisse obtenir: années, mois, la plus grande valeur pour le mois, la deuxième plus grande valeur pour le mois dans chaque ligne.
Il me semble que les solutions bien connues comme "TOP 2", "NOT IN TOP 1" ou un sous-select ne fonctionneront pas ici.
(Pour être vraiment spécifique - j'utilise SQL Server 2008.)
Toute aide appréciée, thx.
Oui, c'est certainement une solution de travail, thx. Je pense qu'il existe plusieurs solutions similaires en utilisant des jointures, mais je me demande toujours (ou mieux dit, juste curieux) s'il y en a un sans eux? – Helena
Je suis tombé sur des problèmes similaires au cours des années et je me demandais également s'il y avait une solution plus simple (sans jointures peut-être), mais ne pouvait pas affiner un. Et comme il s'avère que la solution de jointure, même si elle peut sembler un kludge, fonctionne parfaitement et assez rapidement. – skajfes
@Helena: btw vote et/ou accepter la réponse si vous pensez que c'est utile, et bienvenue à stackoverflow – skajfes