Obtener primer y ultimo registro de un conjunto de resultados

14/11/2005 - 15:14 por Sergio Rodriguez | Informe spam
Tengo los siguientes datos:

id_docto folio nombre fecha_mod
codigo
001 10 CAS 18/01/2005 13:01 65
001 10 ALS 18/01/2005 15:20 65
001 10 CTG 19/01/2005 09:00 65
004 85 SAM 13/05/2005 09:25 65
004 85 CTG 13/05/2005 11:20 65
004 85 DFG 13/05/2005 18:54 65


Com puedo generar una consulta que me de lo siguiente:

id_docto folio UsrPrimeraMod UsrUltimaMod FechaPrimMod
FechaUltMod codigo
001 10 CAS ALS
18/01/2005 13:01 19/01/2005 09:00 65
004 85 SAM DFG
13/05/2005 09:25 13/05/2005 18:54 65

Quise ver si SQL Server tiene las funciones equivalentes en acces First y
Last para realizar la siguiente consulta:

select a.id_docto, a.folio,first(nombre) as UsrPrimeraMod, last(nombre) as
UsrUltimaMod, first(a.fecha) as FechaPrimMod, last(a.fecha) as FechaUltMod,
a.codemp
from tabla a
where codempe
group by a.id_docto,a.folio,a.codemp
order by a.id_docto,folio

Como realizarlo en SQL??

Preguntas similare

Leer las respuestas

#1 Alejandro Mesa
14/11/2005 - 15:31 | Informe spam
Sergio Rodriguez,

Las fiunciones FIRST y LAST no forman parte de T-SQL, pero pueden ser
simuladas si nos dices cual criterio a usar para identificar la primera y
ultima fila del grupo. Chequea la sentencia "select" en los libros en linea y
especialmente la parte sobre agrupacion y funciones de grupo como MIN y MAX.


AMB


"Sergio Rodriguez" wrote:

Tengo los siguientes datos:

id_docto folio nombre fecha_mod
codigo
001 10 CAS 18/01/2005 13:01 65
001 10 ALS 18/01/2005 15:20 65
001 10 CTG 19/01/2005 09:00 65
004 85 SAM 13/05/2005 09:25 65
004 85 CTG 13/05/2005 11:20 65
004 85 DFG 13/05/2005 18:54 65


Com puedo generar una consulta que me de lo siguiente:

id_docto folio UsrPrimeraMod UsrUltimaMod FechaPrimMod
FechaUltMod codigo
001 10 CAS ALS
18/01/2005 13:01 19/01/2005 09:00 65
004 85 SAM DFG
13/05/2005 09:25 13/05/2005 18:54 65

Quise ver si SQL Server tiene las funciones equivalentes en acces First y
Last para realizar la siguiente consulta:

select a.id_docto, a.folio,first(nombre) as UsrPrimeraMod, last(nombre) as
UsrUltimaMod, first(a.fecha) as FechaPrimMod, last(a.fecha) as FechaUltMod,
a.codemp
from tabla a
where codempe
group by a.id_docto,a.folio,a.codemp
order by a.id_docto,folio

Como realizarlo en SQL??



Respuesta Responder a este mensaje
#2 Miguel Egea
14/11/2005 - 15:33 | Informe spam
No, no las tiene, tendrás queu sar max y min, si te valen si no te valen,
podemos preparar algún script que ayude. Cuentanos.

Miguel Egea
Visita mi web http://www.portalsql.com
SQL Server MVP, Mentor
Solid Quality Learning
http://www.SolidQualityLearning.com
"Solid Quality Learning is the trusted global provider of advanced education
and solutions for the entire Microsoft database platform"

"Sergio Rodriguez" wrote in message
news:
Tengo los siguientes datos:

id_docto folio nombre fecha_mod codigo
001 10 CAS 18/01/2005 13:01
65
001 10 ALS 18/01/2005 15:20
65
001 10 CTG 19/01/2005 09:00
65
004 85 SAM 13/05/2005 09:25 65
004 85 CTG 13/05/2005 11:20
65
004 85 DFG 13/05/2005 18:54
65


Com puedo generar una consulta que me de lo siguiente:

id_docto folio UsrPrimeraMod UsrUltimaMod FechaPrimMod
FechaUltMod codigo
001 10 CAS ALS 18/01/2005
13:01 19/01/2005 09:00 65
004 85 SAM DFG 13/05/2005
09:25 13/05/2005 18:54 65

Quise ver si SQL Server tiene las funciones equivalentes en acces First y
Last para realizar la siguiente consulta:

select a.id_docto, a.folio,first(nombre) as UsrPrimeraMod, last(nombre) as
UsrUltimaMod, first(a.fecha) as FechaPrimMod, last(a.fecha) as
FechaUltMod, a.codemp
from tabla a
where codempe
group by a.id_docto,a.folio,a.codemp
order by a.id_docto,folio

Como realizarlo en SQL??

Respuesta Responder a este mensaje
#3 Maxi
14/11/2005 - 15:37 | Informe spam
Hola, nuestro amigo no indico que SQL tiene, si es en 2000 es correcto lo
que indica Ale, si es en 2005 hayu otras formas de hacer esto mucho mas
simple, existe la funcion Row_number() la cual nos es util para numerar
filas y se podria buscar el primero y el ultimo con ella, la unica
desventaja que le veo aun es que se debe materializar la tabla para hacer un
where sobre un row_number() :(


Salu2
Maxi [MVP SQL SERVER]


"Alejandro Mesa" escribió en el
mensaje news:
Sergio Rodriguez,

Las fiunciones FIRST y LAST no forman parte de T-SQL, pero pueden ser
simuladas si nos dices cual criterio a usar para identificar la primera y
ultima fila del grupo. Chequea la sentencia "select" en los libros en
linea y
especialmente la parte sobre agrupacion y funciones de grupo como MIN y
MAX.


AMB


"Sergio Rodriguez" wrote:

Tengo los siguientes datos:

id_docto folio nombre fecha_mod
codigo
001 10 CAS 18/01/2005 13:01
65
001 10 ALS 18/01/2005 15:20
65
001 10 CTG 19/01/2005 09:00
65
004 85 SAM 13/05/2005 09:25
65
004 85 CTG 13/05/2005 11:20
65
004 85 DFG 13/05/2005 18:54
65


Com puedo generar una consulta que me de lo siguiente:

id_docto folio UsrPrimeraMod UsrUltimaMod
FechaPrimMod
FechaUltMod codigo
001 10 CAS ALS
18/01/2005 13:01 19/01/2005 09:00 65
004 85 SAM DFG
13/05/2005 09:25 13/05/2005 18:54 65

Quise ver si SQL Server tiene las funciones equivalentes en acces First y
Last para realizar la siguiente consulta:

select a.id_docto, a.folio,first(nombre) as UsrPrimeraMod, last(nombre)
as
UsrUltimaMod, first(a.fecha) as FechaPrimMod, last(a.fecha) as
FechaUltMod,
a.codemp
from tabla a
where codempe
group by a.id_docto,a.folio,a.codemp
order by a.id_docto,folio

Como realizarlo en SQL??



Respuesta Responder a este mensaje
#4 Sergio Rodriguez
14/11/2005 - 15:49 | Informe spam
El criterio es la fecha de modificacion incluye fecha y hora, eso lo puedo
sacar mediante MAX y MIN por ese campo, pero el problema lo tengo al querer
devolver el usuario de la primera modificacion, ya que si uso MAX o MIN me
devuelven valor pero respecto a su orden en el alfabeto
En base a los ejemplos, para el folio 10 la fecha de la primera mod es
18/01/2005 13:01 y el usuario que hizo la primera mod es CAS, para el mismo
folio 10, el usuario que hizo la ultima mod es CTG el dia 19/01/2005 09:00.
Con las fechas no tengo problema, lo tengo con los nombres de usuarios, en
obtener el resultado que incluya

id_docto folio UsrPrimMod FechaPrimMod UsrUltMod FechaUltMod
Codigo

A lo mejor el problema que tengo es querer devolver valores de diferentes
filas resumidos en 1

Alguna idea que me puedan dar?

"Alejandro Mesa" escribió en el
mensaje news:
Sergio Rodriguez,

Las fiunciones FIRST y LAST no forman parte de T-SQL, pero pueden ser
simuladas si nos dices cual criterio a usar para identificar la primera y
ultima fila del grupo. Chequea la sentencia "select" en los libros en
linea y
especialmente la parte sobre agrupacion y funciones de grupo como MIN y
MAX.


AMB


"Sergio Rodriguez" wrote:

Tengo los siguientes datos:

id_docto folio nombre fecha_mod
codigo
001 10 CAS 18/01/2005 13:01
65
001 10 ALS 18/01/2005 15:20
65
001 10 CTG 19/01/2005 09:00
65
004 85 SAM 13/05/2005 09:25
65
004 85 CTG 13/05/2005 11:20
65
004 85 DFG 13/05/2005 18:54
65


Com puedo generar una consulta que me de lo siguiente:

id_docto folio UsrPrimeraMod UsrUltimaMod
FechaPrimMod
FechaUltMod codigo
001 10 CAS ALS
18/01/2005 13:01 19/01/2005 09:00 65
004 85 SAM DFG
13/05/2005 09:25 13/05/2005 18:54 65

Quise ver si SQL Server tiene las funciones equivalentes en acces First y
Last para realizar la siguiente consulta:

select a.id_docto, a.folio,first(nombre) as UsrPrimeraMod, last(nombre)
as
UsrUltimaMod, first(a.fecha) as FechaPrimMod, last(a.fecha) as
FechaUltMod,
a.codemp
from tabla a
where codempe
group by a.id_docto,a.folio,a.codemp
order by a.id_docto,folio

Como realizarlo en SQL??



Respuesta Responder a este mensaje
#5 Sergio Rodriguez
14/11/2005 - 15:49 | Informe spam
El criterio es la fecha de modificacion incluye fecha y hora, eso lo puedo
sacar mediante MAX y MIN por ese campo, pero el problema lo tengo al querer
devolver el usuario de la primera modificacion, ya que si uso MAX o MIN me
devuelven valor pero respecto a su orden en el alfabeto
En base a los ejemplos, para el folio 10 la fecha de la primera mod es
18/01/2005 13:01 y el usuario que hizo la primera mod es CAS, para el mismo
folio 10, el usuario que hizo la ultima mod es CTG el dia 19/01/2005 09:00.
Con las fechas no tengo problema, lo tengo con los nombres de usuarios, en
obtener el resultado que incluya

id_docto folio UsrPrimMod FechaPrimMod UsrUltMod FechaUltMod
Codigo

A lo mejor el problema que tengo es querer devolver valores de diferentes
filas resumidos en 1

Alguna idea que me puedan dar?

"Miguel Egea" escribió en el mensaje
news:
No, no las tiene, tendrás queu sar max y min, si te valen si no te valen,
podemos preparar algún script que ayude. Cuentanos.

Miguel Egea
Visita mi web http://www.portalsql.com
SQL Server MVP, Mentor
Solid Quality Learning
http://www.SolidQualityLearning.com
"Solid Quality Learning is the trusted global provider of advanced
education and solutions for the entire Microsoft database platform"

"Sergio Rodriguez" wrote in message
news:
Tengo los siguientes datos:

id_docto folio nombre fecha_mod codigo
001 10 CAS 18/01/2005 13:01 65
001 10 ALS 18/01/2005 15:20 65
001 10 CTG 19/01/2005 09:00 65
004 85 SAM 13/05/2005 09:25
65
004 85 CTG 13/05/2005 11:20 65
004 85 DFG 13/05/2005 18:54 65


Com puedo generar una consulta que me de lo siguiente:

id_docto folio UsrPrimeraMod UsrUltimaMod
FechaPrimMod FechaUltMod codigo
001 10 CAS ALS 18/01/2005
13:01 19/01/2005 09:00 65
004 85 SAM DFG 13/05/2005
09:25 13/05/2005 18:54 65

Quise ver si SQL Server tiene las funciones equivalentes en acces First y
Last para realizar la siguiente consulta:

select a.id_docto, a.folio,first(nombre) as UsrPrimeraMod, last(nombre)
as UsrUltimaMod, first(a.fecha) as FechaPrimMod, last(a.fecha) as
FechaUltMod, a.codemp
from tabla a
where codempe
group by a.id_docto,a.folio,a.codemp
order by a.id_docto,folio

Como realizarlo en SQL??





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