SQL Server - Update del valor mínimo de otra tabla

   
Vista:

Update del valor mínimo de otra tabla

Publicado por novatillo (6 intervenciones) el 24/03/2011 12:12:15
Buenas:

LLevo varios días a vueltas con esta consulta, tengo una tabla nueva que necesito actualizar -entera- con datos de una vieja, la idea sería algo así, pero claro, esta consulta no va:

UPDATE N SET N.Fecha=MIN(V.Fecha)
FROM Tabla_Nueva N join [Tabla_Vieja V
ON N.Dato1=V.Dato1 and N.Dato2=V.Dato2

Msg 157, Level 15, State 1, Line 2
An aggregate may not appear in the set list of an UPDATE statement.

No traga el MIN, lógicamente, es decir, necesito actualizar el campo N.Fecha con el valor mínimo de V.Fecha para toda la tabla N.

¿Sabríais como puedo hacer?

Gracias, un saludo.
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
Imágen de perfil de xve

Update del valor mínimo de otra tabla

Publicado por xve (86 intervenciones) el 24/03/2011 14:23:16
Hola amigo, creo que seria algo así:

UPDATE N SET N.Fecha=MIN(V.Fecha)
FROM Tabla_Nueva N LEFT JOIN Tabla_Vieja V
ON (N.Dato1=V.Dato1 and N.Dato2=V.Dato2)

Coméntame si te sirve...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Update del valor mínimo de otra tabla

Publicado por novatillo (6 intervenciones) el 24/03/2011 16:54:41
Gracias, peor mismo error :(
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Isaias

Update del valor mínimo de otra tabla

Publicado por Isaias (3182 intervenciones) el 24/03/2011 22:25:03
UPDATE Tabla_Nueva SET N.Fecha = v.Fecha
FROM Tabla_Nueva n JOIN (SELECT MIN(FECHA) FROM TABLA_VIEJA) v
ON n.Dato1 = v.Dato1 AND
n.Dato2 = v.Dato2
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Update del valor mínimo de otra tabla

Publicado por novatillo (6 intervenciones) el 25/03/2011 10:17:56
No va, pero parece que se acerca, de hecho esta SELECT, sin UPDATE sí funciona (tuve que cambiar el orden del SELECT MIN, si lo ponía despues del JOIN no iba...):

SELECT MIN(V.Fecha) FROM Tabla_Vieja AS V JOIN Tabla_Nueva AS N
ON (N.Dato1 = V.Dato1 AND N.Dato2= V.Dato2)

Funciona OK, me devuelve los resultados que busco.

¿¿Sin embargo con el UPDATE no reconoce el valor que quiero asignar???

UPDATE Tabla_Nueva SET N.Fecha=V.Fecha
SELECT MIN(V.Fecha) FROM Tabla_Vieja AS V JOIN Tabla_Nueva AS N
ON (N.Dato1 = V.Dato1 AND N.Dato2= V.Dato2)

Msg 4104, Level 16, State 1, Line 3
The multi-part identifier "V.Fecha" could not be bound.

También he probado a poner los nombres de tabla completos y demás.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Update del valor mínimo de otra tabla

Publicado por novatillo (6 intervenciones) el 25/03/2011 10:52:28
Creo que ya solucioné, sobraba el valor que intentaba asignar:

UPDATE Tabla_Nueva
SET Fecha=
(SELECT MIN(V.Fecha) FROM Tabla_Vieja AS V JOIN Tabla_Nueva N
ON (N.Dato1 = V.Dato1 AND N.Dato2= V.Dato2))

Tardará un buen rato, que la "Tabla_Vieja" son unos 7 millones de registros, poca cosa jajaj ;)

Gracias a todos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Update del valor mínimo de otra tabla

Publicado por novatillo (6 intervenciones) el 25/03/2011 11:58:40
Canté victoria antes de tiempo, me ha puesto el mismo resultado en todos los registros del campo Fecha :( ¿tendré que hacer un bucle para recorrer toda la tabla, registro a registro?, quería evitar cursores ya que la "Tabla_Vieja" son millones de registros y así evitar que tarde demasiado.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de roger

Update del valor mínimo de otra tabla

Publicado por roger rogergomez780@hotmail.com (173 intervenciones) el 28/03/2011 00:49:21
creo que bastaria con complementarle algo a la consulta que propuso Isaias

UPDATE Tabla_Nueva SET N.Fecha = v.fechaMinima
FROM Tabla_Nueva n JOIN
(SELECT MIN(FECHA) AS fechaMinima,dato1,dato2 FROM TABLA_VIEJA GROUP BY Dato1,Dato2) v
ON n.Dato1 = v.Dato1 AND n.Dato2 = v.Dato2

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar