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

#6 José Antonio Muñoz
30/03/2009 - 18:20 | Informe spam
No, ¿como se realizan los planes de ejecución?

José Antonio Muñoz

"Alejandro Mesa" escribió en el
mensaje de noticias
news:
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
#7 Alejandro Mesa
30/03/2009 - 20:12 | Informe spam
Temas de procedimientos de planes de ejecución
http://msdn.microsoft.com/es-es/library/ms190402(SQL.90).aspx

Mostrar planes de ejecución gráficos (SQL Server Management Studio)
http://msdn.microsoft.com/es-es/library/ms178071(SQL.90).aspx


AMB

"José Antonio Muñoz" wrote:

No, ¿como se realizan los planes de ejecución?

José Antonio Muñoz

"Alejandro Mesa" escribió en el
mensaje de noticias
news:
> 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
#8 Carlos Sacristan
31/03/2009 - 09:04 | Informe spam
Además de lo que comenta Alejandro, te recomiendo la lectura del ebook
descargable del enlace que aparece en
http://www.red-gate.com/specials/Grant.htm

Es el único libro, que haya visto por ahí, dedicado única y exclusivamente a
tratar los planes de ejecución.


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


"Alejandro Mesa" wrote:

Temas de procedimientos de planes de ejecución
http://msdn.microsoft.com/es-es/library/ms190402(SQL.90).aspx

Mostrar planes de ejecución gráficos (SQL Server Management Studio)
http://msdn.microsoft.com/es-es/library/ms178071(SQL.90).aspx


AMB

"José Antonio Muñoz" wrote:

> No, ¿como se realizan los planes de ejecución?
>
> José Antonio Muñoz
>
> "Alejandro Mesa" escribió en el
> mensaje de noticias
> news:
> > 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
#9 José Antonio Muñoz
31/03/2009 - 10:11 | Informe spam
Muchas gracias por vuestra ayuda, al final la segunda consulta es más
óptima.

saludos
José Antonio Muñoz

"Carlos Sacristan" escribió en
el mensaje de noticias
news:
Además de lo que comenta Alejandro, te recomiendo la lectura del ebook
descargable del enlace que aparece en
http://www.red-gate.com/specials/Grant.htm

Es el único libro, que haya visto por ahí, dedicado única y exclusivamente
a
tratar los planes de ejecución.


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


"Alejandro Mesa" wrote:

Temas de procedimientos de planes de ejecución
http://msdn.microsoft.com/es-es/library/ms190402(SQL.90).aspx

Mostrar planes de ejecución gráficos (SQL Server Management Studio)
http://msdn.microsoft.com/es-es/library/ms178071(SQL.90).aspx


AMB

"José Antonio Muñoz" wrote:

> No, ¿como se realizan los planes de ejecución?
>
> José Antonio Muñoz
>
> "Alejandro Mesa" escribió en
> el
> mensaje de noticias
> news:
> > 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
> >> >> >
> >> >> >
> >>
> >>
>
>
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida