Aggiornamento record

lunedì 31 gennaio 2011 - 13.08

trinity Profilo | Guru

Raga,
scusate forse sarà facile ma sto in tilt da influenza e quindi non riesco bene a trovare la soluzione..il mio problema è molto semplice:

ho una tabella di questo genere:

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

con i seguenti record:

Insert into comuni (codice,codistat,descrizione,provincia)Values(1000,0,'ROMA','RM') Insert into comuni (codice,codistat,descrizione,provincia)Values(1001,251,'ROMA','RM') E COSI' VIA

in pratica io devo prendere record che hanno codistat=0 e aggiornare questo campo con il codistat giusto che si trova nel record omologo ma con codice diverso. ossia il risultato dovrebbe essere questo:

1000,251,'ROMA','RM'
1001,251,'ROMA','RM'


Come posso fare?

Ciao e grazie





Cirillo Fabio
www.wondernet.biz
fabio@wondernet.biz
http://blogs.dotnethell.it/fabiocirillo/
http://wnetsoftware.blogspot.com

lbenaglia Profilo | Guru

>in pratica io devo prendere record che hanno codistat=0 e aggiornare
>questo campo con il codistat giusto che si trova nel record omologo
>ma con codice diverso. ossia il risultato dovrebbe essere questo:
>
>1000,251,'ROMA','RM'
>1001,251,'ROMA','RM'
Il record "omologo" è rappresentato da quali colonne? Descrizione e Provincia?

--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/

dinoxet Profilo | Senior Member

COSA INTENDI PER OMOLOGO??


DINOXET
__________________________________________
impossible is only a word

trinity Profilo | Guru

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.

ciao
Cirillo Fabio
www.wondernet.biz
fabio@wondernet.biz
http://blogs.dotnethell.it/fabiocirillo/
http://wnetsoftware.blogspot.com

lbenaglia Profilo | Guru

>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/

trinity Profilo | Guru

su scusa hai ragione, la descrizione è sempre uguale

Cirillo Fabio
www.wondernet.biz
fabio@wondernet.biz
http://blogs.dotnethell.it/fabiocirillo/
http://wnetsoftware.blogspot.com
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5