SELECT con MAX

09/02/2004 - 12:35 por Alfonso Lucas Carbonell | Informe spam
Hola grupo, tengo un pequeño problema, y como no le saco solución ni con la
ayuda, os pregunto en general a todos.

Tengo una tabla con 200.000 registros mas o menos que tengo que cargar
semanalmente, pero desde el servidor de extracción, no me lo quieren extraer
de otra manera, o sea que tengo en esta tabla mas datos de los que
necesito.
Os cuento:

Es una tabla en la que tengo un fichero de matriculas de coche(MATRICULA),
con su numero de poliza(NPOL) y la fecha de efecto(FEFE) y movimiento(MOV) y
causa de movimiento(CAMO).

Yo solo necesito cargar el ultimo estado de la matricula, es decir que puedo
tener una matricula con distintos numeros de poliza, con distitas fechas de
efecto.

Lo he precargado en una tabla y ahora lo que quiero es hacer la select con
el ultimo estado y cargarlo en la tabla buena, pero no se como hacerlo, os
pongo el ejemplo:

SELECT MATRICULA,MAX(FEFE) AS FECHA FROM PREMATRICULAS
GROUP BY MATRICULA

Esta select es perfecta, pero me faltan los demas campos, si le meto los
demas campos, ya los tengo que agregar al group by y ya no me devuelve el
numero real de matriculas en su ultimo movimiento.

Lo ideal seria:
SELECT MAX(FEFE) AS FECHA,MATRICULA, CAMO, MOV,NPOL
FROM PREMATRICULAS
GROUP BY MATRICULA
pero falla, necesito los dos datos de la consulta anterios, mas los que
correnponden a ese registro que me devuelve.

Muchas gracias a todos.









____________________________________________________________________________
________________________

Este mensaje se envía desde Ges Seguros y Reaseguros S.A., está protegido
por la ley y puede contener secretos de empresa. Si lo recibiera por
error, por favor notifíquelo respondiendo al mensaje y bórrelo de su
sistema. Por favor, no lo copie o use para cualquier propósito o comunique a
otras personas, si lo hiciese supondría ruptura de confidencialidad, esto
podría suponer una seria infracción legal, civil y penalmente perseguida en
España y otros países. Gracias por su colaboración. Tel . 34 902 308 585

This e-mail is confidential and may well also be legally privileged. If you
have received it in error, you are on notice of its status. Please notify
immediately by reply e-mail and then delete this message from your
system. Please do not copy it or use it for any purposes, or disclose its
contents to any other person: to do so could be a breach of confidence.
Breach of confidentiality

Preguntas similare

Leer las respuestas

#1 Jordi Del Hoyo Martin
09/02/2004 - 13:43 | Informe spam
Has mirado la clausula TOP


"Alfonso Lucas Carbonell" escribió en el mensaje
news:%
Hola grupo, tengo un pequeño problema, y como no le saco solución ni con


la
ayuda, os pregunto en general a todos.

Tengo una tabla con 200.000 registros mas o menos que tengo que cargar
semanalmente, pero desde el servidor de extracción, no me lo quieren


extraer
de otra manera, o sea que tengo en esta tabla mas datos de los que
necesito.
Os cuento:

Es una tabla en la que tengo un fichero de matriculas de coche(MATRICULA),
con su numero de poliza(NPOL) y la fecha de efecto(FEFE) y movimiento(MOV)


y
causa de movimiento(CAMO).

Yo solo necesito cargar el ultimo estado de la matricula, es decir que


puedo
tener una matricula con distintos numeros de poliza, con distitas fechas


de
efecto.

Lo he precargado en una tabla y ahora lo que quiero es hacer la select con
el ultimo estado y cargarlo en la tabla buena, pero no se como hacerlo, os
pongo el ejemplo:

SELECT MATRICULA,MAX(FEFE) AS FECHA FROM PREMATRICULAS
GROUP BY MATRICULA

Esta select es perfecta, pero me faltan los demas campos, si le meto los
demas campos, ya los tengo que agregar al group by y ya no me devuelve el
numero real de matriculas en su ultimo movimiento.

Lo ideal seria:
SELECT MAX(FEFE) AS FECHA,MATRICULA, CAMO, MOV,NPOL
FROM PREMATRICULAS
GROUP BY MATRICULA
pero falla, necesito los dos datos de la consulta anterios, mas los que
correnponden a ese registro que me devuelve.

Muchas gracias a todos.












____________________________________________________________________________
________________________

Este mensaje se envía desde Ges Seguros y Reaseguros S.A., está protegido
por la ley y puede contener secretos de empresa. Si lo recibiera por
error, por favor notifíquelo respondiendo al mensaje y bórrelo de su
sistema. Por favor, no lo copie o use para cualquier propósito o comunique


a
otras personas, si lo hiciese supondría ruptura de confidencialidad, esto
podría suponer una seria infracción legal, civil y penalmente perseguida


en
España y otros países. Gracias por su colaboración. Tel . 34 902 308 585

This e-mail is confidential and may well also be legally privileged. If


you
have received it in error, you are on notice of its status. Please notify
immediately by reply e-mail and then delete this message from your
system. Please do not copy it or use it for any purposes, or disclose its
contents to any other person: to do so could be a breach of confidence.
Breach of confidentiality


Respuesta Responder a este mensaje
#2 Javier Loria
09/02/2004 - 13:45 | Informe spam
Hola Alfonso:
Prueba con algo como esto a ver si te funciona y no es demasiado lento:
== SELECT Prematriculas.Fecha,
Prematriculas.Matricula,
Prematriculas.Camo,
Prematriculas.Mov,
Prematriculas.Nol
FROM Prematriculas
JOIN (SELECT Matricula,MAX(Fefe) AS Fecha
FROM PreMatriculas
GROUP BY Matricula) AS P1
ON Prematriculas.Fecha=P1.Fecha
AND Prematriculas.Matricula=P1.Matricula
== Esto asumiendo que NO hay 2 PreMatriculas con el mismo numero de
Matricula para la misma fecha.(Fecha/Matricula es UNIQUE).
Saludos,


Javier Loria
Costa Rica
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.

Alfonso Lucas Carbonell escribio:
Hola grupo, tengo un pequeño problema, y como no le saco solución ni
con la ayuda, os pregunto en general a todos.

Tengo una tabla con 200.000 registros mas o menos que tengo que cargar
semanalmente, pero desde el servidor de extracción, no me lo quieren
extraer de otra manera, o sea que tengo en esta tabla mas datos de
los que necesito.
Os cuento:

Es una tabla en la que tengo un fichero de matriculas de
coche(MATRICULA), con su numero de poliza(NPOL) y la fecha de
efecto(FEFE) y movimiento(MOV) y causa de movimiento(CAMO).

Yo solo necesito cargar el ultimo estado de la matricula, es decir
que puedo tener una matricula con distintos numeros de poliza, con
distitas fechas de efecto.

Lo he precargado en una tabla y ahora lo que quiero es hacer la
select con el ultimo estado y cargarlo en la tabla buena, pero no se
como hacerlo, os pongo el ejemplo:

SELECT MATRICULA,MAX(FEFE) AS FECHA FROM PREMATRICULAS
GROUP BY MATRICULA

Esta select es perfecta, pero me faltan los demas campos, si le meto
los demas campos, ya los tengo que agregar al group by y ya no me
devuelve el numero real de matriculas en su ultimo movimiento.

Lo ideal seria:
SELECT MAX(FEFE) AS FECHA,MATRICULA, CAMO, MOV,NPOL
FROM PREMATRICULAS
GROUP BY MATRICULA
pero falla, necesito los dos datos de la consulta anterios, mas los
que correnponden a ese registro que me devuelve.

Muchas gracias a todos.
Respuesta Responder a este mensaje
#3 Alfonso Lucas Carbonell
09/02/2004 - 16:08 | Informe spam
y que consigo con eso? si solo me sirve para sacar las X filas primera de la
ordenación.
y yo no se cuantas hay.


"Jordi Del Hoyo Martin" escribió en el
mensaje news:
Has mirado la clausula TOP


"Alfonso Lucas Carbonell" escribió en el mensaje
news:%
> Hola grupo, tengo un pequeño problema, y como no le saco solución ni con
la
> ayuda, os pregunto en general a todos.
>
> Tengo una tabla con 200.000 registros mas o menos que tengo que cargar
> semanalmente, pero desde el servidor de extracción, no me lo quieren
extraer
> de otra manera, o sea que tengo en esta tabla mas datos de los que
> necesito.
> Os cuento:
>
> Es una tabla en la que tengo un fichero de matriculas de


coche(MATRICULA),
> con su numero de poliza(NPOL) y la fecha de efecto(FEFE) y


movimiento(MOV)
y
> causa de movimiento(CAMO).
>
> Yo solo necesito cargar el ultimo estado de la matricula, es decir que
puedo
> tener una matricula con distintos numeros de poliza, con distitas fechas
de
> efecto.
>
> Lo he precargado en una tabla y ahora lo que quiero es hacer la select


con
> el ultimo estado y cargarlo en la tabla buena, pero no se como hacerlo,


os
> pongo el ejemplo:
>
> SELECT MATRICULA,MAX(FEFE) AS FECHA FROM PREMATRICULAS
> GROUP BY MATRICULA
>
> Esta select es perfecta, pero me faltan los demas campos, si le meto los
> demas campos, ya los tengo que agregar al group by y ya no me devuelve


el
> numero real de matriculas en su ultimo movimiento.
>
> Lo ideal seria:
> SELECT MAX(FEFE) AS FECHA,MATRICULA, CAMO, MOV,NPOL
> FROM PREMATRICULAS
> GROUP BY MATRICULA
> pero falla, necesito los dos datos de la consulta anterios, mas los que
> correnponden a ese registro que me devuelve.
>
> Muchas gracias a todos.
>
>
>
>
>
>
>
>
>
>



____________________________________________________________________________
> ________________________
>
> Este mensaje se envía desde Ges Seguros y Reaseguros S.A., está


protegido
> por la ley y puede contener secretos de empresa. Si lo recibiera por
> error, por favor notifíquelo respondiendo al mensaje y bórrelo de su
> sistema. Por favor, no lo copie o use para cualquier propósito o


comunique
a
> otras personas, si lo hiciese supondría ruptura de confidencialidad,


esto
> podría suponer una seria infracción legal, civil y penalmente perseguida
en
> España y otros países. Gracias por su colaboración. Tel . 34 902 308


585
>
> This e-mail is confidential and may well also be legally privileged. If
you
> have received it in error, you are on notice of its status. Please


notify
> immediately by reply e-mail and then delete this message from your
> system. Please do not copy it or use it for any purposes, or disclose


its
> contents to any other person: to do so could be a breach of confidence.
> Breach of confidentiality
>
>


Respuesta Responder a este mensaje
#4 Alfonso Lucas Carbonell
09/02/2004 - 16:08 | Informe spam
Me repite las filas y no se por que, la verdad, es que no creo que tenga que
ser tan dificil.

De todas formas, muchas gracias.

"Javier Loria" escribió en el mensaje
news:#
Hola Alfonso:
Prueba con algo como esto a ver si te funciona y no es demasiado


lento:
==> SELECT Prematriculas.Fecha,
Prematriculas.Matricula,
Prematriculas.Camo,
Prematriculas.Mov,
Prematriculas.Nol
FROM Prematriculas
JOIN (SELECT Matricula,MAX(Fefe) AS Fecha
FROM PreMatriculas
GROUP BY Matricula) AS P1
ON Prematriculas.Fecha=P1.Fecha
AND Prematriculas.Matricula=P1.Matricula
==> Esto asumiendo que NO hay 2 PreMatriculas con el mismo numero de
Matricula para la misma fecha.(Fecha/Matricula es UNIQUE).
Saludos,


Javier Loria
Costa Rica
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.

Alfonso Lucas Carbonell escribio:
> Hola grupo, tengo un pequeño problema, y como no le saco solución ni
> con la ayuda, os pregunto en general a todos.
>
> Tengo una tabla con 200.000 registros mas o menos que tengo que cargar
> semanalmente, pero desde el servidor de extracción, no me lo quieren
> extraer de otra manera, o sea que tengo en esta tabla mas datos de
> los que necesito.
> Os cuento:
>
> Es una tabla en la que tengo un fichero de matriculas de
> coche(MATRICULA), con su numero de poliza(NPOL) y la fecha de
> efecto(FEFE) y movimiento(MOV) y causa de movimiento(CAMO).
>
> Yo solo necesito cargar el ultimo estado de la matricula, es decir
> que puedo tener una matricula con distintos numeros de poliza, con
> distitas fechas de efecto.
>
> Lo he precargado en una tabla y ahora lo que quiero es hacer la
> select con el ultimo estado y cargarlo en la tabla buena, pero no se
> como hacerlo, os pongo el ejemplo:
>
> SELECT MATRICULA,MAX(FEFE) AS FECHA FROM PREMATRICULAS
> GROUP BY MATRICULA
>
> Esta select es perfecta, pero me faltan los demas campos, si le meto
> los demas campos, ya los tengo que agregar al group by y ya no me
> devuelve el numero real de matriculas en su ultimo movimiento.
>
> Lo ideal seria:
> SELECT MAX(FEFE) AS FECHA,MATRICULA, CAMO, MOV,NPOL
> FROM PREMATRICULAS
> GROUP BY MATRICULA
> pero falla, necesito los dos datos de la consulta anterios, mas los
> que correnponden a ese registro que me devuelve.
>
> Muchas gracias a todos.


Respuesta Responder a este mensaje
#5 ulises
09/02/2004 - 17:53 | Informe spam
Con permiso de Javier, te debería funcionar a menos que
estes usando "LEFT JOIN" en lugar de "JOIN" (a secas), en
el primer caso te estaría repitiendo las filas y sería
necesario incluir la sentencia "WHERE P1.Fecha <> NULL";
claro que esta sentencia es menos eficiente que la
indicada por Javier.

Saludos,
Ulises

Me repite las filas y no se por que, la verdad, es que no


creo que tenga que
ser tan dificil.

De todas formas, muchas gracias.

"Javier Loria" escribió en el mensaje
news:#
Hola Alfonso:
Prueba con algo como esto a ver si te funciona y no




es demasiado
lento:
==>> SELECT Prematriculas.Fecha,
Prematriculas.Matricula,
Prematriculas.Camo,
Prematriculas.Mov,
Prematriculas.Nol
FROM Prematriculas
JOIN (SELECT Matricula,MAX(Fefe) AS Fecha
FROM PreMatriculas
GROUP BY Matricula) AS P1
ON Prematriculas.Fecha=P1.Fecha
AND




Prematriculas.Matricula=P1.Matricula
==>> Esto asumiendo que NO hay 2 PreMatriculas con el




mismo numero de
Matricula para la misma fecha.(Fecha/Matricula es




UNIQUE).
Saludos,


Javier Loria
Costa Rica
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.

Alfonso Lucas Carbonell escribio:
> Hola grupo, tengo un pequeño problema, y como no le




saco solución ni
> con la ayuda, os pregunto en general a todos.
>
> Tengo una tabla con 200.000 registros mas o menos que




tengo que cargar
> semanalmente, pero desde el servidor de extracción,




no me lo quieren
> extraer de otra manera, o sea que tengo en esta




tabla mas datos de
> los que necesito.
> Os cuento:
>
> Es una tabla en la que tengo un fichero de matriculas




de
> coche(MATRICULA), con su numero de poliza(NPOL) y la




fecha de
> efecto(FEFE) y movimiento(MOV) y causa de movimiento




(CAMO).
>
> Yo solo necesito cargar el ultimo estado de la




matricula, es decir
> que puedo tener una matricula con distintos numeros




de poliza, con
> distitas fechas de efecto.
>
> Lo he precargado en una tabla y ahora lo que quiero




es hacer la
> select con el ultimo estado y cargarlo en la tabla




buena, pero no se
> como hacerlo, os pongo el ejemplo:
>
> SELECT MATRICULA,MAX(FEFE) AS FECHA FROM




PREMATRICULAS
> GROUP BY MATRICULA
>
> Esta select es perfecta, pero me faltan los demas




campos, si le meto
> los demas campos, ya los tengo que agregar al group




by y ya no me
> devuelve el numero real de matriculas en su ultimo




movimiento.
>
> Lo ideal seria:
> SELECT MAX(FEFE) AS FECHA,MATRICULA, CAMO, MOV,NPOL
> FROM PREMATRICULAS
> GROUP BY MATRICULA
> pero falla, necesito los dos datos de la consulta




anterios, mas los
> que correnponden a ese registro que me devuelve.
>
> Muchas gracias a todos.






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