Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Aktualisieren einer Spalte basierend auf dem Wert einer anderen Spalte

Ich werde versuchen, dies so einfach wie möglich zu erklären, damit es leicht zu verstehen ist:

Nehmen wir an, Sie haben eine Tabelle Vendor etwas wie folgt einrichten:

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

Und dann werden wir einige Beispielwerte für beide Spalten in Vendor einfügen Tabelle:

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

Als Nächstes schreiben wir eine Aktualisierungsanweisung, um Ihr ulARAgeing zu aktualisieren Spalte basierend auf den Werten in AccountTerms Spalte in derselben Tabelle:

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 ähnelt der Verwendung von IF..ELSE -Anweisung in den meisten anderen Programmiersprachen. Hier werden wir also das vorhandene ulARAgeing aktualisieren value in einen anderen Zeichenfolgenwert basierend auf der Bedingung in der case when-Anweisung. Also, für z. wenn AccountTerms = 0 dann aktualisieren wir den Wert für ulARAgeing zu `Aktuell' und so weiter.

Um zu überprüfen, ob die obige Anweisung richtig funktioniert hat, müssen Sie nur die obige Update-Anweisung ausführen und dann erneut aus der Tabelle auswählen:

 select * from Vendor; 

Ergebnis:

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

SQL-Fiddle-Demo