No puedo resolver este SELECT

06/05/2004 - 15:15 por Guillermo | Informe spam
Necesito sacar una consulta con el último registro de cada mes, de una tabla
que registra los accesos a un sistema.
En la tabla se graba un registro con el nombre de usuario y la fecha/hora
cada vez que un usuario ingresa.

Lo que necesito es tener un listado histórico de la última vez que ingreso
en cada mes, un usuario a este sistema.

En acces lo puedo hacer con Select LAST(campo)
En SQL Como lo hago

Preguntas similare

Leer las respuestas

#1 Francisco Camina [MS]
06/05/2004 - 15:28 | Informe spam
Hola Guillermo,

Podrías usar una sentencia del tipo SELECT TOP 1 campo_fecha FROM tabla
ORDER BY campo_fecha desc otra sentencia puede ser usando el operador MAX,
por ejemplo SELECT MAX (campo_fecha) from tabla.

Un saludo,

Francisco Camina

"Guillermo" wrote in message
news:
Necesito sacar una consulta con el último registro de cada mes, de una


tabla
que registra los accesos a un sistema.
En la tabla se graba un registro con el nombre de usuario y la fecha/hora
cada vez que un usuario ingresa.

Lo que necesito es tener un listado histórico de la última vez que ingreso
en cada mes, un usuario a este sistema.

En acces lo puedo hacer con Select LAST(campo)
En SQL Como lo hago


Respuesta Responder a este mensaje
#2 Maxi
06/05/2004 - 15:29 | Informe spam
Hola, aca lo que podrias hacer es usar la funcion Max sobre la fecha y te
dara la ultima fecha de cada mes, ahora si ademas de esto queres ver mas
datos (todo el registro) deberias de usar subconsultas por ej

Vemos (sin probar)

Select t1.id,tutabla.nombre,datepart(mm,t1.fecha) as mes,(select top 1
campos from tutabla t2
where t2.id = t1.id and datepart(mm,t2.fecha) = datepart(mm,t1.fecha)) as
ultimo
from tutabla t1

=
Esto deberia funcionar :-)





Salu2
Maxi
Buenos Aires - Argentina
Desarrollador Microsoft 3 Estrellas .NET
Nunca consideres el estudio como una obligación sino como
una oportunidad para penetrar en el bello y maravillosos
mundo del saber.
- Albert Einstein



"Guillermo" escribió en el mensaje
news:
Necesito sacar una consulta con el último registro de cada mes, de una


tabla
que registra los accesos a un sistema.
En la tabla se graba un registro con el nombre de usuario y la fecha/hora
cada vez que un usuario ingresa.

Lo que necesito es tener un listado histórico de la última vez que ingreso
en cada mes, un usuario a este sistema.

En acces lo puedo hacer con Select LAST(campo)
En SQL Como lo hago







Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.676 / Virus Database: 438 - Release Date: 03/05/2004
Respuesta Responder a este mensaje
#3 José Raúl Fenollar Martínez
06/05/2004 - 15:32 | Informe spam
select cliente,max(fecha) from tabla
group by cliente,month(fecha)

Seria coneveniente tener un campo con el número de mes directamente (podria
ser calculado)
y indice sobre cliente,mes

"Guillermo" escribió en el mensaje
news:
Necesito sacar una consulta con el último registro de cada mes, de una


tabla
que registra los accesos a un sistema.
En la tabla se graba un registro con el nombre de usuario y la fecha/hora
cada vez que un usuario ingresa.

Lo que necesito es tener un listado histórico de la última vez que ingreso
en cada mes, un usuario a este sistema.

En acces lo puedo hacer con Select LAST(campo)
En SQL Como lo hago


Respuesta Responder a este mensaje
#4 ulises
06/05/2004 - 19:09 | Informe spam
Puedes probar con :

create table historia ( usuario int, fecha datetime )
go
insert into historia values ( 1, '20040401' )
insert into historia values ( 1, '20040411' )
insert into historia values ( 1, '20040331' )
insert into historia values ( 1, '20040311' )
insert into historia values ( 2, '20040421' )
insert into historia values ( 2, '20040411' )
insert into historia values ( 2, '20040331' )
insert into historia values ( 2, '20040311' )
go
select datepart(year,fecha) as periodo,
datepart(month,fecha) as mes,
max(fecha) as ultimo
from historia
where usuario = 1
group by datepart(year,fecha),datepart(month,fecha)

resultado :

periodo mes ultimo
2004 3 2004-03-31 00:00:00.000
2004 4 2004-04-11 00:00:00.000

(2 row(s) affected)

el inconveniente es que te pueden quedar meses vacíos ya
que el usuario puede que no hay ingresa en un mes
determinado (p.e. vacaciones) pero eso lo puedes manejar
perfectamente en el front-end donde muestres la
información.

Salduos,
Ulises

Necesito sacar una consulta con el último registro de


cada mes, de una tabla
que registra los accesos a un sistema.
En la tabla se graba un registro con el nombre de usuario


y la fecha/hora
cada vez que un usuario ingresa.

Lo que necesito es tener un listado histórico de la


última vez que ingreso
en cada mes, un usuario a este sistema.

En acces lo puedo hacer con Select LAST(campo)
En SQL Como lo hago


.

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