sql >> Base de Datos >  >> RDS >> Sqlserver

Actualización de una columna en función del valor de otra columna

Voy a tratar de explicar esto de la manera más simple posible para que sea fácil de entender:

Supongamos que tiene una tabla Vendor configurar algo como esto:

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

Y luego insertaremos algunos valores de muestra para ambas columnas en Vendor tabla:

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

A continuación, escribiremos una declaración de actualización para actualizar su ulARAgeing columna basada en los valores de AccountTerms columna en la misma tabla:

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 es similar a usar IF..ELSE declaración en la mayoría de los otros lenguajes de programación. Entonces, aquí actualizaremos el ulARAgeing existente valor a un valor de cadena diferente basado en la condición en el caso cuando declaración. Entonces, por ej. si AccountTerms = 0 luego actualizaremos el valor para ulARAgeing a 'Actual' y así sucesivamente.

Para verificar si la declaración anterior funcionó correctamente, solo necesita ejecutar la declaración de actualización anterior y luego seleccionar de la tabla nuevamente:

 select * from Vendor; 

Resultado:

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

Demostración de SQL Fiddle