sql >> データベース >  >> RDS >> Sqlserver

T-SQLを使用してSQLServerで計算列を作成する

    この記事では、T-SQLを使用してSQLServerで計算列を作成する方法について説明します。

    計算列 式を使用してその値を計算する仮想列です。式は通常、他の列のデータを使用します。計算列は、PERSISTEDとマークされていない限り、テーブルに物理的に保存されません。 。

    例1-計算列を含むテーブルを作成する

    これは、計算列を使用してテーブルを作成し、データを挿入してから、テーブルのコンテンツを選択する例です。

    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;
    

    結果:

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

    この場合、最後の列は計算列です。数量列に価格列を掛けます。これにより、現在在庫のある製品の合計値を取得できます。

    例2–永続化された計算列を作成する

    PERSISTEDを追加することで、永続化された計算列を作成できます 口論。これにより、計算値がテーブルに物理的に保存されます。永続化されていない場合は、計算された列を読み取るたびに値が計算されます。

    これは前のコード例と同じですが、今回は永続化された計算列を作成します:

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

    唯一の違いは、PERSISTEDです。 引数。

    例3–値を更新する

    ここで、値がQuantityで更新された場合 またはPrice 列の場合、これは計算された列によって返される合計値に影響します。これは、列が永続化されているかどうかに関係なく発生します。

    たとえば、誰かがハンマーを購入した場合、これは計算された列によって返される合計値に影響します:

    UPDATE Products
    SET Quantity = 4
    WHERE ProductId = 1;
    
    SELECT *
    FROM Products;
    

    結果:

    +-------------+---------------+------------+---------+--------------+
    | 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. INNER JOIN ONvsWHERE句

    2. プロシージャは、提供されなかったパラメータを予期しています

    3. SQLServerでINNERJOINを使用して複数のテーブルから削除するにはどうすればよいですか

    4. Oracle SQL Developerでクエリ結果をcsvにエクスポートするにはどうすればよいですか?