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

Opdatering af en kolonne baseret på værdien af ​​en anden kolonne

Jeg vil prøve at forklare dette på en enkel måde så meget som muligt, så det er let at forstå :

Lad os antage, at du har en tabel Vendor opsæt noget som dette:

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

Og så vil vi indsætte nogle eksempelværdier for begge kolonner i Vendor tabel:

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

Dernæst vil vi skrive en opdateringserklæring for at opdatere din ulARAgeing kolonne baseret på værdierne i AccountTerms kolonne i samme 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 ligner at bruge IF..ELSE statement på de fleste andre programmeringssprog. Så her vil vi opdatere den eksisterende ulARAgeing værdi til en anden strengværdi baseret på betingelsen i case when-sætningen. Så for f.eks. hvis AccountTerms = 0 så opdaterer vi værdien for ulARAgeing til 'Aktuel' og så videre.

For at kontrollere, om ovenstående sætning fungerede korrekt, skal du blot køre opdateringssætningen ovenfor og derefter vælge fra tabellen igen:

 select * from Vendor; 

Resultat:

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

SQL Fiddle Demo



  1. Hvordan opdateres JPA-enheder, når backend-databasen ændres asynkront?

  2. Forespørgsel kører hurtigt, men kører langsomt i lagret procedure

  3. PHP PDO udarbejdede erklæringer

  4. Udfør øjeblikkelig ændring af brugerbindingsvariabel