Top 1 y Group By

25/02/2009 - 15:27 por María | Informe spam
Tabla (solo con los campos relevantes)
grupo, fecha, otros datos

Quiero obtener el primer registro de cada grupo ordenado por fecha

Por ej, para un solo grupo sería:

select Top 1 fecha, otros datos from Tabla where grupo ='01' order by fecha

pero yo lo quiero para todos los grupos.

Se puede?
 

Leer las respuestas

#1 Carlos Sacristan
25/02/2009 - 15:29 | Informe spam
No dices qué versión de SQL Server tienes. Suponiendo que sea 2005, una
posible solución podría ser:


CREATE TABLE #t (grupo CHAR(2), fecha SMALLDATETIME)
GO
INSERT #t
SELECT 'c1', '20090101'
UNION
SELECT 'c1', '20090105'
UNION
SELECT 'c2', '20090201'
UNION
SELECT 'c2', '20090203'

SELECT *
FROM (SELECT grupo, fecha, ROW_NUMBER() OVER(PARTITION BY grupo ORDER BY
fecha) rn FROM #t) t
WHERE rn = 1



Un saludo
-
www.navento.com
Servicios de Localización GPS


"María" wrote:

Tabla (solo con los campos relevantes)
grupo, fecha, otros datos

Quiero obtener el primer registro de cada grupo ordenado por fecha

Por ej, para un solo grupo sería:

select Top 1 fecha, otros datos from Tabla where grupo ='01' order by fecha

pero yo lo quiero para todos los grupos.

Se puede?


Preguntas similares