Sentencia SQL

15/07/2003 - 12:04 por dumper | Informe spam
Hola, estoy atascado en una consulta a una tabla y necesito ayuda.

La tabla tiene tres campos:
ID autonumérico
ID_Cliente numérico
Valor numérico

Se trata de una tabla en la que voy insertando de forma continua
valoraciones para cada cliente.

Lo que quiero obtener es una lista con las ultimas valoraciones de cada
cliente.

Select ID_Cliente, Valor
From Tabla T
Where ID = (SELECT max(ID) From Tabla WHERE ID_Cliente = T.ID_Cliente)

¿Se podría mejorar esta consulta?
 

Leer las respuestas

#1 Javier Loria\(MVP\)
15/07/2003 - 18:10 | Informe spam
Hola:
Una forma que probablemente es mas rapida es eliminar la consulta
anidada,
creo que seria algo como:
/* Inicio de Codigo */
SELECT C.ID_Cliente,
D.Valor
FROM (SELECT ID_Cliente
MAX(ID) AS ID
FROM Tabla) AS C
JOIN (SELECT ID, Valor
FROM Tabla) as D
ON
C.ID=D.ID
/* Fin de Codigo */
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.
Hola, estoy atascado en una consulta a una tabla y necesito ayuda.

La tabla tiene tres campos:
ID autonumérico
ID_Cliente numérico
Valor numérico

Se trata de una tabla en la que voy insertando de forma continua
valoraciones para cada cliente.

Lo que quiero obtener es una lista con las ultimas valoraciones de
cada cliente.

Select ID_Cliente, Valor
From Tabla T
Where ID = (SELECT max(ID) From Tabla WHERE ID_Cliente = T.ID_Cliente)

¿Se podría mejorar esta consulta?

Preguntas similares