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

SQL Server の別の列に基づくテーブルで計算列を指定するにはどうすればよいですか?

    はい、計算を行うユーザー定義関数を作成し、計算列の式でそのユーザー定義関数を使用します。

    実際の例は次のようになります.....

    CREATE TABLE TABLE1 (ID INT, VALUE INT)
    GO
    INSERT INTO TABLE1 VALUES (1 , 10), (2 , 20) , (3 , 30)
    GO
    
    CREATE FUNCTION dbo.udf_DefaultValue(@ID INT)
    RETURNS INT
    AS
    BEGIN
        DECLARE @rtnValue INT;
        SELECT @rtnValue = VALUE *2 FROM TABLE1 WHERE ID = @ID
        RETURN @rtnValue;
    END
    GO
    
    CREATE TABLE TABLE2 (ID INT
                      , VALUE INT
                      , ComputedColumn AS (VALUE * dbo.udf_DefaultValue(ID)) )
    GO
    
    INSERT INTO TABLE2 (ID , VALUE)
    VALUES (1, 1)
    
    SELECT * FROM TABLE2
    
    /*****  Result Set  *****/
    
    ID  VALUE   ComputedColumn
    1     1           20
    


    1. AUTO_INCREMENTおよびLAST_INSERT_ID

    2. 連鎖結合が期待どおりにフィルタリングされない

    3. MSSQLでのクエリの優先度

    4. PLSQLを使用してApex表形式を更新