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

Preguntas similare

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


Respuesta Responder a este mensaje
#2 Alejandro Mesa
30/03/2009 - 15:08 | Informe spam
Correccion (Se me fue una coma en la clausula OVER),

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


"Alejandro Mesa" wrote:

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
>
>
Respuesta Responder a este mensaje
#3 albertoamh
30/03/2009 - 15:48 | Informe spam
On 30 mar, 14:33, 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



Has probado con:
SELECT Year(Fecha), Max(Fecha), Numero FROM Tabla GROUP BY
Year(Fecha), Numero

Saludos Alberto
Respuesta Responder a este mensaje
#4 José Antonio Muñoz
30/03/2009 - 17:40 | Informe spam
Estoy utilizando Sql 2008 express. De todas formas veo que la opción
primera, que sirve para cualquier sql, es más simple, ¿entonces, por qué la
versión segunda que sirve para sql 2005/2008? ¿es más efectiva?

saludos
José Antonio Muñoz.

"Alejandro Mesa" escribió en el
mensaje de noticias
news:
Correccion (Se me fue una coma en la clausula OVER),

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


"Alejandro Mesa" wrote:

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
>
>
Respuesta Responder a este mensaje
#5 Alejandro Mesa
30/03/2009 - 17:49 | Informe spam
José Antonio Muñoz,

¿entonces, por qué la versión segunda que sirve para sql 2005/2008?
¿es más efectiva?



Comparastes los planes de ejecucion?


AMB


"José Antonio Muñoz" wrote:

Estoy utilizando Sql 2008 express. De todas formas veo que la opción
primera, que sirve para cualquier sql, es más simple, ¿entonces, por qué la
versión segunda que sirve para sql 2005/2008? ¿es más efectiva?

saludos
José Antonio Muñoz.

"Alejandro Mesa" escribió en el
mensaje de noticias
news:
> Correccion (Se me fue una coma en la clausula OVER),
>
> 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
>
>
> "Alejandro Mesa" wrote:
>
>> 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
>> >
>> >


Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida