sql >> Databasteknik >  >> RDS >> Sqlserver

Uppdatering av en kolumn baserat på värdet på en annan kolumn

Jag ska försöka förklara detta på ett enkelt sätt så mycket som möjligt så att det är lätt att förstå :

Låt oss anta att du har en tabell Vendor ställ in något så här:

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

Och sedan kommer vi att infoga några exempelvärden för båda kolumnerna i Vendor tabell:

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

Därefter kommer vi att skriva ett uppdateringsmeddelande för att uppdatera din ulARAgeing kolumn baserat på värdena i AccountTerms kolumn i samma tabell:

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 liknar att använda IF..ELSE uttalande i de flesta andra programmeringsspråk. Så här kommer vi att uppdatera den befintliga ulARAgeing värde till ett annat strängvärde baserat på villkoret i case when-satsen. Så, för t.ex. om AccountTerms = 0 sedan uppdaterar vi värdet för ulARAgeing till 'Aktuell' och så vidare.

För att kontrollera om ovanstående sats fungerade korrekt behöver du bara köra uppdateringssatsen ovan och sedan välja från tabellen igen:

 select * from Vendor; 

Resultat:

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

SQL Fiddle Demo



  1. Rekursiv fråga i SQL Server

  2. Generera månadsnamn, dagnamn, veckonummer och dagnummer mellan två datum

  3. Hur SET ROWCOUNT fungerar i SQL Server

  4. Hur man använder UPDATE från SELECT i SQL Server