Tôi biết câu trả lời này đến muộn hai năm, nhưng chỉ để giúp bất kỳ ai sử dụng Google và tìm thấy bài đăng này:
Hoàn toàn hợp pháp khi xác định một hàm do người dùng xác định và sử dụng nó làm giá trị được tính toán. Hàm này có thể chứa các câu lệnh chọn từ các bảng khác.
CREATE FUNCTION dbo.getAdViews(@packageId int)
RETURNS INT
AS
BEGIN
declare @bav int
select @bav = BaseAdViews from Packages where PackageId = @packageId
RETURN @bav
END
Sau đó, trong cột được tính toán của bạn, chỉ cần sử dụng biểu thức dbo.getSumAdViews(PackageId)+MediaSpend
như vậy:
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]