Select que no sale...

17/03/2008 - 17:24 por Angel g. | Informe spam
Tengo una tabla de personal relacionada con otra que contiene los cursos que
ha realizado cada uno con su correspondiente fecha.
Y quiero obtener los 5 ultimos cursos que ha realizado cada persona.

tabla personal: id (int pk), nombre (nvarchar 100)
tabla cursos: id (int pk autonumerico), idpersonal (int fk), fecha
(sdmalldatetime), curso (nvarchar (50)

quisiera obtener una consulta que devolviera:

Nombre Curso Fecha (Obteniendo las ultimas 5 fechas de cada uno. O sea, los
5 ultimos cursos)

Esto se puede hacer en una sola consulta? es en SQL server 2005

Muchas gracias.

Preguntas similare

Leer las respuestas

#1 DarthSidious
17/03/2008 - 19:01 | Informe spam
si, revista el TOP que se puede usar en los select, mas info aca:

http://technet.microsoft.com/es-es/...89463.aspx

salu2

"Angel g." wrote:

Tengo una tabla de personal relacionada con otra que contiene los cursos que
ha realizado cada uno con su correspondiente fecha.
Y quiero obtener los 5 ultimos cursos que ha realizado cada persona.

tabla personal: id (int pk), nombre (nvarchar 100)
tabla cursos: id (int pk autonumerico), idpersonal (int fk), fecha
(sdmalldatetime), curso (nvarchar (50)

quisiera obtener una consulta que devolviera:

Nombre Curso Fecha (Obteniendo las ultimas 5 fechas de cada uno. O sea, los
5 ultimos cursos)

Esto se puede hacer en una sola consulta? es en SQL server 2005

Muchas gracias.



Respuesta Responder a este mensaje
#2 Alejandro Mesa
17/03/2008 - 23:14 | Informe spam
Angel g." ,

Cual version de SQL Server estas usando?


;wtih cte
as
(
select
p.id, p.nombre, c.id as curso_id, c.fecha, c.curso,
row_number() over(partition by p.id order by c.fecha DESC) as rn
from
personal as p inner join cursos as c
on p.[id] = c.idpersonal
)
select *
from cte
where rn <= 5;


AMB

"Angel g." wrote:

Tengo una tabla de personal relacionada con otra que contiene los cursos que
ha realizado cada uno con su correspondiente fecha.
Y quiero obtener los 5 ultimos cursos que ha realizado cada persona.

tabla personal: id (int pk), nombre (nvarchar 100)
tabla cursos: id (int pk autonumerico), idpersonal (int fk), fecha
(sdmalldatetime), curso (nvarchar (50)

quisiera obtener una consulta que devolviera:

Nombre Curso Fecha (Obteniendo las ultimas 5 fechas de cada uno. O sea, los
5 ultimos cursos)

Esto se puede hacer en una sola consulta? es en SQL server 2005

Muchas gracias.



Respuesta Responder a este mensaje
#3 Angel g.
18/03/2008 - 09:58 | Informe spam
Hola, grácias por responder.

Si, pero el problema es que quiero obtener la lista de TODO el personal. No
de uno solo


"DarthSidious" escribió en el
mensaje news:
si, revista el TOP que se puede usar en los select, mas info aca:

http://technet.microsoft.com/es-es/...89463.aspx

salu2

"Angel g." wrote:

Tengo una tabla de personal relacionada con otra que contiene los cursos
que
ha realizado cada uno con su correspondiente fecha.
Y quiero obtener los 5 ultimos cursos que ha realizado cada persona.

tabla personal: id (int pk), nombre (nvarchar 100)
tabla cursos: id (int pk autonumerico), idpersonal (int fk), fecha
(sdmalldatetime), curso (nvarchar (50)

quisiera obtener una consulta que devolviera:

Nombre Curso Fecha (Obteniendo las ultimas 5 fechas de cada uno. O sea,
los
5 ultimos cursos)

Esto se puede hacer en una sola consulta? es en SQL server 2005

Muchas gracias.






Respuesta Responder a este mensaje
#4 Angel g.
18/03/2008 - 09:59 | Informe spam
Grácias Alejandro,
Efectivamente es para 2005.
Lo voy a probar! ;-)


"Alejandro Mesa" escribió en el
mensaje news:
Angel g." ,

Cual version de SQL Server estas usando?


;wtih cte
as
(
select
p.id, p.nombre, c.id as curso_id, c.fecha, c.curso,
row_number() over(partition by p.id order by c.fecha DESC) as rn
from
personal as p inner join cursos as c
on p.[id] = c.idpersonal
)
select *
from cte
where rn <= 5;


AMB

"Angel g." wrote:

Tengo una tabla de personal relacionada con otra que contiene los cursos
que
ha realizado cada uno con su correspondiente fecha.
Y quiero obtener los 5 ultimos cursos que ha realizado cada persona.

tabla personal: id (int pk), nombre (nvarchar 100)
tabla cursos: id (int pk autonumerico), idpersonal (int fk), fecha
(sdmalldatetime), curso (nvarchar (50)

quisiera obtener una consulta que devolviera:

Nombre Curso Fecha (Obteniendo las ultimas 5 fechas de cada uno. O sea,
los
5 ultimos cursos)

Esto se puede hacer en una sola consulta? es en SQL server 2005

Muchas gracias.






email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida