sql >> Databáze >  >> RDS >> Sqlserver

Aktualizace jednoho sloupce na základě hodnoty jiného sloupce

Pokusím se to vysvětlit co nejjednodušeji, aby to bylo snadné pochopit :

Předpokládejme, že máte tabulku Vendor nastavit něco takového:

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

A pak vložíme několik vzorových hodnot pro oba sloupce v Vendor tabulka:

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

Dále napíšeme aktualizační prohlášení k aktualizaci vašeho ulARAgeing na základě hodnot v AccountTerms sloupec ve stejné tabulce:

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 je podobné použití IF..ELSE ve většině ostatních programovacích jazyků. Zde tedy budeme aktualizovat stávající ulARAgeing hodnotu na jinou hodnotu řetězce na základě podmínky v příkazu case when. Takže pro např. pokud AccountTerms = 0 poté aktualizujeme hodnotu pro ulARAgeing na „Aktuální“ a tak dále.

Chcete-li zkontrolovat, zda výše uvedený příkaz fungoval správně, stačí spustit příkaz aktualizace výše a poté znovu vybrat z tabulky:

 select * from Vendor; 

Výsledek:

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

Ukázka SQL Fiddle



  1. Vybrat vše až do prvního výskytu znaku

  2. SQL Server 2008:Pokud ne, INSERT ukončí, zachová jedinečný sloupec

  3. Extrahujte klíč, hodnotu z objektů json v Postgresu

  4. Dotaz SQL pro seskupení položek podle času, ale pouze pokud jsou blízko sebe?