Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Comment spécifier des colonnes calculées dans une table basées sur une autre colonne dans SQL Server ?

Oui, vous créeriez une fonction définie par l'utilisateur pour effectuer le calcul et utiliser cette fonction définie par l'utilisateur dans l'expression de la colonne Computed.

Un exemple de travail serait quelque chose comme .....

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