vista que devuelva el mas nuevo registro de cada cliente segun determinados valores

07/04/2005 - 13:43 por .·:m·a·r·l·a:·. | Informe spam
hola a todos

tengo una tabla en la que insertamos valoraciones de los clientes segun
determinados criterios, y dado que es necesario mantener dichas valoraciones
historicamente no se sobreescriben registros

es pues los key-fields son codigo de cliente y la fecha del estudio

una de los campos importantes es la veracidad, valor de 1 a 10 si el estudio
es simplemente orientativo o perfectamente fiable (no todos lo


de esta forma quiero obtener las dos vistas siguiente:
- la mas nueva de las valoraciones de cada cliente
- la mas veraz y actual de las valoraciones para cada cliente

supongamos el caso de que a cliente "cliente_ejemplo" se le han hecho 5
valoraciones tal que la tabla muestra:

(K) cliente (K)date veracidad resto de columnas...
cliente_ejemplo 2005-01-01 07 resto de valores...
cliente_ejemplo 2005-02-01 06 resto de valores...
cliente_ejemplo 2005-03-01 07 resto de valores...
cliente_ejemplo 2005-04-01 05 resto de valores...

asi para las vistas desearia obtener:
- la mas nueva de las valoraciones de cada cliente
registro numero 4
- la mas veraz y actual de las valoraciones para cada cliente
registro numero 3

es posible de hacer esto mediante una sola vista para cada caso??
o necesito hacer vistas auxiliares para:
- combinacion cliente-fecha mas reciente
- combinacion cliente-veracidad mas alta
- combinacion vista_anterior-fecha mas actual
y usar estas vistas auxiliares para obtener el registro deseado ??

decir que en una sola vista, si hago grup_by cliente y max para date y
veracidad obtengo
cliente_ejemplo 2005-04-01 07
lo cual no corresponde a ningun registro valido

gracias por adelantado
 

Leer las respuestas

#1 Alejandro Mesa
07/04/2005 - 14:27 | Informe spam
Tratta con:

select *
from cliente_valoracion as a
where fecha_del_estudio = (select max(b.fecha_del_estudio) from
cliente_valoracion as b where b.cliente_id = a.cliente_id)

select *
from cliente_valoracion as a
where veracidad = (select max(b.veracidad) from cliente_valoracion as b
where b.cliente_id = a.cliente_id) and fecha_del_estudio = (select
max(b.fecha_del_estudio) from cliente_valoracion as b where b.cliente_id =
a.cliente_id and b.veracidad = (select max(b.veracidad) from
cliente_valoracion as c where c.cliente_id = a.cliente_id))

Esta solucion no ha sido probada.

AMB

".·:m·a·r·l·a:·." wrote:

hola a todos

tengo una tabla en la que insertamos valoraciones de los clientes segun
determinados criterios, y dado que es necesario mantener dichas valoraciones
historicamente no se sobreescriben registros

es pues los key-fields son codigo de cliente y la fecha del estudio

una de los campos importantes es la veracidad, valor de 1 a 10 si el estudio
es simplemente orientativo o perfectamente fiable (no todos lo


de esta forma quiero obtener las dos vistas siguiente:
- la mas nueva de las valoraciones de cada cliente
- la mas veraz y actual de las valoraciones para cada cliente

supongamos el caso de que a cliente "cliente_ejemplo" se le han hecho 5
valoraciones tal que la tabla muestra:

(K) cliente (K)date veracidad resto de columnas...
cliente_ejemplo 2005-01-01 07 resto de valores...
cliente_ejemplo 2005-02-01 06 resto de valores...
cliente_ejemplo 2005-03-01 07 resto de valores...
cliente_ejemplo 2005-04-01 05 resto de valores...

asi para las vistas desearia obtener:
- la mas nueva de las valoraciones de cada cliente
registro numero 4
- la mas veraz y actual de las valoraciones para cada cliente
registro numero 3

es posible de hacer esto mediante una sola vista para cada caso??
o necesito hacer vistas auxiliares para:
- combinacion cliente-fecha mas reciente
- combinacion cliente-veracidad mas alta
- combinacion vista_anterior-fecha mas actual
y usar estas vistas auxiliares para obtener el registro deseado ??

decir que en una sola vista, si hago grup_by cliente y max para date y
veracidad obtengo
cliente_ejemplo 2005-04-01 07
lo cual no corresponde a ningun registro valido

gracias por adelantado







Preguntas similares