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

Sélection de colonne calculée SQL Server à partir d'une autre table

Je sais que cette réponse arrive avec deux ans de retard, mais juste pour aider tous ceux qui recherchent et trouvent ce message :

Il est parfaitement légal de définir une fonction définie par l'utilisateur et de l'utiliser comme valeur calculée. Cette fonction peut contenir des instructions de sélection d'autres tables.

CREATE FUNCTION dbo.getAdViews(@packageId int)
RETURNS INT
AS
BEGIN
    declare @bav int
    select @bav = BaseAdViews from Packages where PackageId = @packageId
    RETURN @bav
END

Ensuite, dans votre colonne calculée, utilisez simplement l'expression dbo.getSumAdViews(PackageId)+MediaSpend ainsi :

CREATE TABLE [dbo].[Orders](
    [OrderId] [int] IDENTITY(1,1) NOT NULL,
    [PackageId] [int] NOT NULL,
    [MediaSpend] [int] NULL,
    [TotalAdViews] AS dbo.getAdViews(PackageId)+MediaSpend
) ON [PRIMARY]