>Nello specifico la query qui sopra aggiorna LabelTest.IndicativoNazione
>con Null in tutti i records dove non trova corrispondenza. Al
>contrario io vorrei che dove non trova corrispondenza lasciasse
>il valore esistente.
>
>E' possibile?
Ciao Denis,
Per rispondere adeguatamente ad un quesito occorre riprodurre il problema, pertanto è necessario mettere nelle condizioni di operare chi decide di accettare la sfida ![](/img/emo1.gif)
Pertanto dovresti sempre postare un esempio completo con la struttura delle tabelle (CREATE TABLE), alcune righe di prova (INSERT INTO) ed il restult set finale che intendi ottenere con quei dati.
Ad ogni modo, provo a proporti una soluzione che dovrebbe risolvere il tuo problema:
CREATE PROCEDURE CorreggiIndicativoNazione
@CodiceAzienda char(4),
@ListaCarico char(4)
AS
UPDATE LT
SET LT.IndicativoNazione = I.IndicativoNazione
FROM dbo.LabelTest AS LT
JOIN dbo.IndicativiNazione AS I
ON LT.CodiceCliente = I.CodiceCliente
AND LT.CodiceAzienda = I.CodiceAzienda
WHERE LT.CodiceAzienda = @CodiceAzienda
AND LT.ListaCarico = @ListaCarico;
La tua query invece aggiornava tutte le righe della tabella LabelTest e dove non trovava alcuna corrispondenza nella tabella IndicativiNazione SQL Server si trovava costretto ad assegnare un "non valore" alla colonna IndicativoNazione (NULL appunto).
>Grazie 1000
Prego.
Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org