Saltar al contenido

Selección de columna calculada de SQL Server de otra tabla

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.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *