>il record omologo intendo lo stesso record con stessi dati eccetto
>la colonna codistat che ha per un record il valore 0 e per l'altro
>il valore 251...io devo aggiornare il valore 0 con 251.
Devi essere più preciso.
Nel seguente esempio considererò le colonne Descrizione e Provincia (le uniche "con gli stessi dati") poi vedi tu:
USE tempdb;
CREATE TABLE dbo.Comuni(
Codice int NOT NULL,
Codistat int NULL,
Descrizione nvarchar(255) NULL,
Provincia nvarchar(255) NULL
CONSTRAINT PK_V_COMUNI PRIMARY KEY(Codice)
);
INSERT dbo.Comuni
VALUES(1000,0,'ROMA','RM')
, (1001,251,'ROMA','RM');
WITH CTE_GetRowsToUpdate AS
(
SELECT Codistat, Descrizione, Provincia
FROM dbo.Comuni
WHERE Codistat = 0
)
UPDATE CTE
SET CTE.Codistat = C.Codistat
FROM CTE_GetRowsToUpdate AS CTE
JOIN dbo.Comuni AS C
ON CTE.Descrizione = C.Descrizione
AND CTE.Provincia = C.Provincia
WHERE C.Codistat <> 0;
SELECT *
FROM dbo.Comuni;
/* Output:
Codice Codistat Descrizione Provincia
----------- ----------- ------------ ----------
1000 251 ROMA RM
1001 251 ROMA RM
(2 row(s) affected)
*/
DROP TABLE dbo.Comuni;
Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/