Consulta de agregado

30/03/2009 - 14:33 por José Antonio Muñoz | Informe spam
Hola al grupo,

Tengo una tabla con dos campos: Fecha y Numero, necesito una consulta SQL
para obtener los valores del campo Numero de aquellos registros cuya fecha
sea la última de cada año. Por ejemplo:

Fecha Número
02/05/1999 56
06/09/1999 7
24/11/1999 14
18/05/2000 3
25/08/2000 1
30/12/2000 22

El resultado sería:
Año Fecha Número
1999 24/11/1999 14
2000 30/12/2000 22

Con la instrucción "SELECT Year(Fecha), Max(Fecha) FROM Tabla GROUP BY
Year(Fecha)" puedo obtener las últimas fechas de cada año pero ¿como puedo
obtener los valores correspondientes al campo Número?

saludos
José Antonio Muñoz
 

Leer las respuestas

#1 Alejandro Mesa
30/03/2009 - 15:06 | Informe spam
José Antonio Muñoz,

Cual version de SQL Server usas?

select
t2.y,
t1.Fecha,
t1.Numero
from
Tabla as t1
inner join
(
SELECT Year(Fecha) as [y], Max(Fecha) as [f]
FROM Tabla
GROUP BY Year(Fecha)
) t2
on t1.Fecha = t2.f;
GO

with r_set
as
(
select
Fecha, Numero,
rank() over(partition by year(Fecha), order by Fecha DESC) as rnk
from
Tabla
)
select Year(Fecha) as [y], Fecha, Numero
from r_set
where rnk = 1;
GO


AMB


"José Antonio Muñoz" wrote:

Hola al grupo,

Tengo una tabla con dos campos: Fecha y Numero, necesito una consulta SQL
para obtener los valores del campo Numero de aquellos registros cuya fecha
sea la última de cada año. Por ejemplo:

Fecha Número
02/05/1999 56
06/09/1999 7
24/11/1999 14
18/05/2000 3
25/08/2000 1
30/12/2000 22

El resultado sería:
Año Fecha Número
1999 24/11/1999 14
2000 30/12/2000 22

Con la instrucción "SELECT Year(Fecha), Max(Fecha) FROM Tabla GROUP BY
Year(Fecha)" puedo obtener las últimas fechas de cada año pero ¿como puedo
obtener los valores correspondientes al campo Número?

saludos
José Antonio Muñoz


Preguntas similares