Computed Columnの計算結果は別のComputed Columnで参照できない

ので、Viewを使おう

タイトルそのまんまなのですが、SQL ServerのComputed Columnの計算結果は別のComputed Columnで参照するとエラーになります。

CREATE TABLE [dbo].[Orders]
(
    [Id] INT NOT NULL PRIMARY KEY IDENTITY, 
    [CustomerId] INT NOT NULL, 
    [BillingDate] DATE NOT NULL, 
    [TaxableAmount] INT NOT NULL,
    [TaxFreeAmount] INT NOT NULL DEFAULT (0),
    [SalesTax] AS ISNULL([dbo].[ufnCalcSalesTax]([TaxableAmount], [BillingDate]), 0),
    [TotalAmount] AS [TaxableAmount] + [SalesTax] + [TaxFreeAmount]
)

CREATE FUNCTION [dbo].[ufnCalcSalesTax]
(
    @amount int,
    @date date
)
RETURNS INT
AS
BEGIN
    RETURN (
        CAST(@amount *
            CASE
            WHEN @date >= '2014-4-1' THEN 0.08
            WHEN @date >= '1997-4-1' THEN 0.05
            WHEN @date >= '1989-4-1' THEN 0.03
            ELSE 0.0
            END AS INT)
    );
END

計算列[TotalAmount]の中で別の計算列[SalesTax]を参照しているため、エラーとなります。

Computed column 'SalesTax' in table 'Orders' is not allowed to be used in another computed-column definition.

こういう場合は、Viewを使うことになるようです。

stackoverflow.com

CREATE VIEW [dbo].[vOrders]
AS
SELECT
     [Id]
    ,[CustomerId]
    ,[BillingDate]
    ,[TaxableAmount]
    ,[TaxFreeAmount]
    ,[SalesTax]
    ,([TaxableAmount] + [SalesTax] + [TaxFreeAmount]) as [TotalAmount]
FROM [dbo].[Orders]