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

Agregar una columna calculada a una tabla existente en SQL Server

Este artículo demuestra cómo usar T-SQL para agregar una columna calculada a una tabla existente en SQL Server.

Una columna calculada es una columna virtual que utiliza una expresión para calcular su valor. La expresión generalmente usará datos de otras columnas. Una columna calculada no se almacena físicamente en la tabla a menos que esté marcada como PERSISTED .

Ejemplo 1:crear una tabla SIN una columna calculada

Primero, creemos una tabla sin una columna calculada.

CREATE TABLE Products
  (
    ProductID int IDENTITY (1,1) NOT NULL,
    ProductName varchar(255), 
    Quantity smallint,
    Price money
  );

INSERT INTO Products (ProductName, Quantity, Price)
VALUES 
  ('Hammer', 5, 10),
  ('Corkscrew', 2, 7.50),
  ('Kettle', 3, 25.15);

SELECT *
FROM Products;

Resultado:

+-------------+---------------+------------+---------+
| ProductID   | ProductName   | Quantity   | Price   |
|-------------+---------------+------------+---------|
| 1           | Hammer        | 5          | 10.0000 |
| 2           | Corkscrew     | 2          | 7.5000  |
| 3           | Kettle        | 3          | 25.1500 |
+-------------+---------------+------------+---------+

Ejemplo 2:agregar una columna calculada

Ahora agreguemos una columna calculada.

ALTER TABLE Products 
ADD TotalValue AS (Quantity * Price);

Acabamos de agregar una columna calculada llamada TotalValue que multiplica el valor en la Quantity columna con el valor en el Price columna.

Esto es lo que sucede cuando seleccionamos el contenido de la tabla ahora:

SELECT *
FROM Products;

Resultado:

+-------------+---------------+------------+---------+--------------+
| ProductID   | ProductName   | Quantity   | Price   | TotalValue   |
|-------------+---------------+------------+---------+--------------|
| 1           | Hammer        | 5          | 10.0000 | 50.0000      |
| 2           | Corkscrew     | 2          | 7.5000  | 15.0000      |
| 3           | Kettle        | 3          | 25.1500 | 75.4500      |
+-------------+---------------+------------+---------+--------------+

Ejemplo 3:actualizar un valor

Ahora, si se actualiza un valor en la Quantity o Price columnas, esto afectará el valor total devuelto por la columna calculada.

Ejemplo:

UPDATE Products
SET Quantity = 4
WHERE ProductId = 1;

SELECT *
FROM Products;

Resultado:

+-------------+---------------+------------+---------+--------------+
| ProductID   | ProductName   | Quantity   | Price   | TotalValue   |
|-------------+---------------+------------+---------+--------------|
| 1           | Hammer        | 4          | 10.0000 | 40.0000      |
| 2           | Corkscrew     | 2          | 7.5000  | 15.0000      |
| 3           | Kettle        | 3          | 25.1500 | 75.4500      |
+-------------+---------------+------------+---------+--------------+