Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Mise à jour d'une colonne en fonction de la valeur d'une autre colonne

Je vais essayer d'expliquer cela de la manière la plus simple possible pour que ce soit facile à comprendre :

Supposons que vous ayez une table Vendor configurer quelque chose comme ceci :

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

Et, ensuite, nous insérerons des exemples de valeurs pour les deux colonnes dans Vendor tableau :

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

Ensuite, nous rédigerons une déclaration de mise à jour pour mettre à jour votre ulARAgeing colonne basée sur les valeurs de AccountTerms colonne dans le même tableau :

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 est similaire à l'utilisation de IF..ELSE déclaration dans la plupart des autres langages de programmation. Donc, ici, nous allons mettre à jour le ulARAgeing existant valeur à une valeur de chaîne différente en fonction de la condition dans l'instruction case when. Ainsi, par ex. si AccountTerms = 0 puis nous mettrons à jour la valeur de ulARAgeing à 'Actuel' et ainsi de suite.

Pour vérifier si l'instruction ci-dessus a fonctionné correctement, il vous suffit d'exécuter l'instruction de mise à jour ci-dessus, puis de sélectionner à nouveau dans le tableau :

 select * from Vendor; 

Résultat :

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

Démo SQL Fiddle