sql >> Database >  >> RDS >> Sqlserver

Een kolom bijwerken op basis van de waarde van een andere kolom

Ik ga proberen dit zo eenvoudig mogelijk uit te leggen, zodat het gemakkelijk te begrijpen is:

Laten we aannemen dat u een tabel Vendor . heeft stel zoiets als dit in:

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

En dan zullen we enkele voorbeeldwaarden voor beide kolommen invoegen in Vendor tafel:

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

Vervolgens zullen we een update-statement schrijven om uw ulARAgeing . bij te werken kolom gebaseerd op de waarden in AccountTerms kolom in dezelfde tabel:

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 is vergelijkbaar met het gebruik van IF..ELSE statement in de meeste andere programmeertalen. Dus hier gaan we de bestaande ulARAgeing updaten waarde naar een andere tekenreekswaarde op basis van de voorwaarde in de case when-instructie. Dus voor bijv. als de AccountTerms = 0 dan updaten we de waarde voor ulARAgeing naar `Huidige' enzovoort.

Om te controleren of de bovenstaande instructie correct werkte, hoeft u alleen de bovenstaande update-instructie uit te voeren en vervolgens opnieuw uit de tabel te selecteren:

 select * from Vendor; 

Resultaat:

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

SQL Fiddle-demo



  1. Cloud Disaster Recovery voor MariaDB en MySQL

  2. PostgreSQL versus MySQL

  3. verwijder een record uit twee tabellen in php/mysql

  4. Het MySQL-rootwachtwoord opnieuw instellen wanneer het huidige wachtwoord niet bekend is