Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Aggiornamento di una colonna in base al valore di un'altra colonna

Cercherò di spiegarlo nel modo più semplice possibile in modo che sia facile da capire :

Supponiamo di avere una tabella Vendor imposta qualcosa del genere:

create table Vendor (AccountTerms int, ulARAgeing varchar(50));

Quindi inseriremo alcuni valori di esempio per entrambe le colonne in Vendor tabella:

insert into Vendor values
(0,'Test'),
(1,'Test1'),
(2,'Test2');

Successivamente, scriveremo una dichiarazione di aggiornamento per aggiornare il tuo ulARAgeing colonna in base ai valori in AccountTerms colonna nella stessa tabella:

update vendor 
set ulARAgeing = (CASE 
                      WHEN AccountTerms = 0 
                        THEN 'Current'
                      WHEN AccountTerms = 1
                        THEN '30 Days'
                      WHEN AccountTerms = 2
                        THEN '60 Days'
                    END);

CASE WHEN è simile all'utilizzo di IF..ELSE istruzione nella maggior parte degli altri linguaggi di programmazione. Quindi, qui aggiorneremo il ulARAgeing esistente valore su un valore di stringa diverso in base alla condizione nell'istruzione case when. Quindi, per es. se AccountTerms = 0 quindi aggiorneremo il valore per ulARAgeing a "Corrente" e così via.

Per verificare se l'istruzione di cui sopra ha funzionato correttamente, è sufficiente eseguire l'istruzione di aggiornamento sopra e quindi selezionare nuovamente dalla tabella:

 select * from Vendor; 

Risultato:

+--------------+-----------------+
| AccountTerms |   ulARAgeing    |
+--------------+-----------------+
|            0 |         Current |
|            1 |         30 Days |
|            2 |         60 Days |
+--------------+-----------------+

Demo SQL Fiddle