Nuestro grupo de redactores ha pasado mucho tiempo buscando para dar solución a tus preguntas, te regalamos la respuesta de modo que deseamos servirte de mucha apoyo.
Solución:
Sé que esta respuesta llega con dos años de retraso, pero solo para ayudar a cualquiera que busque en Google y encuentre esta publicación:
Es perfectamente legal definir una función definida por el usuario y usarla como el valor calculado. Esta función puede contener instrucciones de selección de otras tablas.
CREATE FUNCTION dbo.getAdViews(@packageId int)
RETURNS INT
AS
BEGIN
declare @bav int
select @bav = BaseAdViews from Packages where PackageId = @packageId
RETURN @bav
END
Luego, en su columna calculada, simplemente use la expresión dbo.getSumAdViews(PackageId)+MediaSpend
como tal:
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]
No podrá usar columnas de otra tabla dentro de una expresión de columna calculada. Este es un extracto de la documentación de MSDN.
Una columna calculada se calcula a partir de una expresión que puede usar otras columnas en la misma tabla.
Mencionó que su motivación para usar una columna calculada era aumentar el rendimiento. Hay muchas restricciones, pero una vista indexada podría agregar valor aquí.
si es solo para fines de visualización, ¿por qué no crear una vista?
select <> mediaspend+basicadviews as totaladviews
from
orders o
join
packages p
on p.packageid=o.orderid
Si estás de acuerdo, tienes la opción de dejar un escrito acerca de qué te ha gustado de este enunciado.