Novato proviniente de M Access 2003 ?¿?

19/04/2007 - 18:20 por dgironal | Informe spam
Muy buenas, reconozco que soy NOVATO total, ¿es posible realizar la
siguiente consulta en Microsoft SQL Server 2000?

SELECT
id,
LAST(campo)

FROM
[Vista Ordenada por id]

GROUP BY ID

Gracias de antemano

Nota: Microsoft Access 2003 incorpora la función LAST, pero SQL Server 2000
No ¿Cómo simularla?

Preguntas similare

Leer las respuestas

#11 dgironal
19/04/2007 - 22:08 | Informe spam
Uhhhh!!, he modificado la cansulta, NO mostraba ciertos registros

68 grupo1 25/10/2005 Texto INICIAL
128 grupo1 22/11/2005 Texto MODIFICADO

Igual, pero modificando esto para que no ¿excluyera? ciertos registros:

WHERE (id (SELECT TOP 1 id
FROM Tabla T
WHERE Tabla.grupo= T.grupo
GROUP BY T.grupo, T.id
ORDER BY T.id, T.grupo DESC))
Respuesta Responder a este mensaje
#12 dgironal
19/04/2007 - 22:17 | Informe spam
Tambíen falla mi modificación, no muestra el último, tú propuesta original
NO muestra algunos grupos ?¿?¿
Respuesta Responder a este mensaje
#13 dgironal
19/04/2007 - 22:20 | Informe spam
No he dicho NADA, la propuesta original FUNCIONA, cuando registros del mismo
grupo están muy separados (id=3, id6) en la consulta aparece más abajo y
no los veía.

DISCULPAS !!!, los voy a ordenar por fecha.
Respuesta Responder a este mensaje
#14 Javier Loria
20/04/2007 - 13:23 | Informe spam
Hola Federico:
Tienes razón, me falto leer bien los requerimientos. :(
Por otra parte el rendimiento del SELECT que escribiste tiene un
rendimiento horrible en tablas grandes. Una alternativa es:
==SELECT Tabla1.id, Tabla1.grupo, Tabla1.fecha
FROM Tabla1
JOIN (SELECT MAX((Id)
FROM Tabla1
GROUP BY Grupo) AS T
ON Tabla1.Id=T.Id
== Saludos,


Javier Loria
Costa Rica (MVP)
Se aprecia la inclusion de DDL (CREATE, INSERTS, etc.)
que pueda ser copiado y pegado al Query Analizer.
La version de SQL y Service Pack tambien ayuda.

"Federico A Colli" wrote in message
news:
Bien, la consulta no es tan simple porque además de devolver el último,
necesitas devolver el último de CADA grupo, ese es otro tema.
Esto me funciona Ok, siendo Tabla1 tu vista o lo que desees.

SELECT Tabla1.id, Tabla1.grupo, Tabla1.fecha
FROM Tabla1
WHERE id = (SELECT TOP 1 id
FROM Tabla1 T
WHERE Tabla1.grupo = T.grupo
GROUP BY T.grupo, T.id, T.fecha
ORDER BY T.grupo, T.fecha DESC, T.id DESC)


Saludos
- Carpe diem, tempus fugit
- El hombre sabio no da las respuestas correctas, propone las preguntas
correctas. (Claude Levi-Strauss)
- La sabiduría no es un producto de la educación sino de toda una vida por
adquirirla. (Albert Einstein)
- El sabio puede sentarse en un hormiguero, pero sólo el necio se queda
sentado en él. (Proverbio chino)

AUS Federico A. Colli


"dgironal" escribió en el mensaje
news:
Otra puntualización IMPORTANTE:

Viendo los registros originales de la tabla, sin conocer el id, no sabría
"el último" registro insertado (no almaceno la hora, sólo la fecha) de un
mismo grupo, pero a través del id sé el último registro insertado
perteneciente al grupo

23 grupo1 1/1/2007 A
37 grupo1 1/1/2007 B
44 grupo1 1/1/2007 C

la consulta para este grupo debería devolver:

44 grupo1 1/1/2007 C

y así para todos los grupos






Respuesta Responder a este mensaje
#15 dgironal
20/04/2007 - 16:30 | Informe spam
Muy buenas he intentado escribir tú consulta, pero SQL Server 2000 me lanza
el siguiente error:

no se ha especificado ninguna columna para la columna 1 de T
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida