sql >> Database >  >> RDS >> Sqlserver

Hoe specificeer ik berekende kolommen in een tabel die zijn gebaseerd op een andere kolom in SQL Server?

Ja, u zou een door de gebruiker gedefinieerde functie maken om de berekening uit te voeren en die door de gebruiker gedefinieerde functie te gebruiken in de uitdrukking van de kolom Berekend.

Een werkend voorbeeld zou zoiets zijn als.....

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. Ernstige prestatieproblemen met MySQL-query's na het toevoegen van een voorwaarde

  2. Creëer weergave over meerdere databases

  3. Aantal MySQL-queryparameters komt overeen met argumenten die zijn doorgegeven om uit te voeren, maar Python roept niet alle geconverteerde argumenten op

  4. Hoe kan ik een veld groeperen met mysql?