sql >> Database >  >> RDS >> Sqlserver

Maak een berekende kolom in SQL Server met behulp van T-SQL

Dit artikel laat zien hoe u T-SQL kunt gebruiken om een ​​berekende kolom in SQL Server te maken.

Een berekende kolom is een virtuele kolom die een uitdrukking gebruikt om de waarde ervan te berekenen. De expressie gebruikt doorgaans gegevens uit andere kolommen. Een berekende kolom wordt niet fysiek opgeslagen in de tabel, tenzij deze is gemarkeerd als PERSISTED .

Voorbeeld 1 – Maak een tabel met een berekende kolom

Hier is een voorbeeld van het maken van een tabel met een berekende kolom, het invoegen van gegevens en het selecteren van de inhoud van de tabel.

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

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

SELECT *
FROM Products;

Resultaat:

+-------------+---------------+------------+---------+--------------+
| 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      |
+-------------+---------------+------------+---------+--------------+

In dit geval is de laatste kolom een ​​berekende kolom. Het vermenigvuldigt de hoeveelheidskolom met de prijskolom. Dit stelt ons in staat om een ​​totale waarde te krijgen van het product dat momenteel op voorraad is.

Voorbeeld 2 – Maak een aanhoudende berekende kolom

U kunt een persistente berekende kolom maken door de PERSISTED . toe te voegen argument. Dit zal ertoe leiden dat de berekende waarde fysiek in de tabel wordt opgeslagen. Als het niet blijft bestaan, wordt de waarde berekend telkens wanneer u de berekende kolom leest.

Hier is hetzelfde codevoorbeeld als het vorige, behalve dat ik deze keer een persistente berekende kolom maak:

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

Het enige verschil is de PERSISTED argument.

Voorbeeld 3 – Een waarde bijwerken

Als nu een waarde wordt bijgewerkt in de Quantity of Price kolommen, heeft dit invloed op de totale waarde die door de berekende kolom wordt geretourneerd. Dit gebeurt ongeacht of de kolom wordt bewaard of niet.

Als iemand bijvoorbeeld een hamer koopt, heeft dit invloed op de totale waarde die wordt geretourneerd door de berekende kolom:

UPDATE Products
SET Quantity = 4
WHERE ProductId = 1;

SELECT *
FROM Products;

Resultaat:

+-------------+---------------+------------+---------+--------------+
| 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      |
+-------------+---------------+------------+---------+--------------+


  1. Hoe de sortering van database, tabel, kolom wijzigen?

  2. Veelgestelde vragen over JAVA/JRE in Oracle Apps

  3. Verbindingsbeheer in PostgreSQL:een gids

  4. SQLite Database geeft waarschuwing automatische index op <table_name>(kolom) Na het upgraden van Android L