Sei in: Home : Competenze : SQL : Microsoft SQL : Ottenere solo le righe con il max di una colonna raggruppate per un altra senza usare GROUP BY

Ottenere solo le righe con il max di una colonna raggruppate per un altra senza usare GROUP BY

Può capitare di non poter/voler usare

SELECT MAX(x) FROM y GROUP BY z

perchè magari serve come subquery di in una query molto complessa e non vogliamo complicarla. E' possibile ottenere lo stesso risultato mettendo la tabella in join con se stessa indicando come condizione il > sullla colonna di cui vogliamo il massimo e poi prendendo la riga con il valore maggiore uguale a NULL

SELECT y1.x FROM y AS y1
LEFT OUTER JOIN y AS y2 ON y1.x < y2.x and y1.z= y2.z
WHERE y2.x IS NULL