Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Atualizando uma coluna com base no valor de outra coluna


Vou tentar explicar isso de uma maneira simples, tanto quanto possível, para que seja fácil de entender:

Vamos supor que você tenha uma tabela Vendor configurar algo assim:
create table Vendor (AccountTerms int, ulARAgeing varchar(50));

E, em seguida, inseriremos alguns valores de amostra para ambas as colunas em Vendor tabela:
insert into Vendor values
(0,'Test'),
(1,'Test1'),
(2,'Test2');

Em seguida, escreveremos uma instrução de atualização para atualizar seu ulARAgeing coluna com base nos valores em AccountTerms coluna na mesma tabela:
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 é semelhante a usar IF..ELSE declaração na maioria das outras linguagens de programação. Então, aqui estaremos atualizando o ulARAgeing existente value para um valor de string diferente com base na condição na instrução case when. Assim, por ex. se os AccountTerms = 0 então atualizaremos o valor para ulARAgeing para 'Atual' e assim por diante.

Para verificar se a instrução acima funcionou corretamente, basta executar a instrução de atualização acima e selecionar na tabela novamente:
 select * from Vendor; 

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

Demonstração do SQL Fiddle