SQL - buscar agregado a partir de otro dato agregado

   
Vista:

buscar agregado a partir de otro dato agregado

Publicado por beni (1 intervención) el 24/11/2010 10:40:54
Buenas!!
No suelo escribir para pedir consejo porque habitualmente con el buscador ya consigo respuestas mas rápido, pero en este caso estoy buscando algo específico y no se si puedo encontrar una mejor forma de hacerlo.

Propondré un ejemplo de lo que necesito (estoy trabajando con SQL Server)

La idea es encontrar la fecha minima de todos los clientes con su código asociado, para modificarlos.

Supongamos estos datos:
Codigo Cliente Fecha validar
100 c1 01/10/10 0
101 c1 01/10/10 0
102 c2 05/10/10 0
103 c2 04/10/10 0
104 c3 10/10/10 0
105 c3 15/10/10 0

El resultado que quiero sería:
100 c1 01/10/10 (a igual fecha,
103 c2 04/10/10
104 c3 10/10/10

y sobre estas líneas lo que haría es modificar el campo 'validar' a 1

Esta es la solución que he sabido encontrar (SQL SERVER), aunque particularmente le estoy dando vueltas para encontrar alguna solución más elegante:

UPDATE c1 SET c1.validar=1
FROM LineasClientes c1 INNER JOIN
(
SELECT Cliente, min(codi) FROM [LineasClientes] c2 INNER JOIN
(
Select Cliente, min(fecha) as minFecha From [LineasClientes] group by Cliente
)t2
ON c2.Cliente = t2.Cliente where c2.Fecha = t2.MinFecha group by Cliente
)t1
on c1.Cliente = t1.Cliente

1) t2 busca la fecha mínima de todo cliente
2)en t1 encontramos los Códigos mínimos con las fechas mínimas encontradas en t2
3) actualizamos el campo 'validar', usando un inner join entre la tabla para modificar y la consulta t1

Gracias de antemano, y a ver si existe alguna forma de hacer más elegante la solución
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder