0

私の select ステートメントには、計算である 2 つの戻り値があります。次のようになります。

 SELECT
     a.FormRate AS 'F-Rate'
     ,a.LoI AS 'Liability'
     ,CAST((A.FormRate * a.LoI / 100) AS DECIMAL(38,2)) 'F-Premium'
     ,a.EndorsementRate AS 'E-Rate'
     ,CAST((A.EndorsementRate * a.LoI / 100) AS DECIMAL(38,2)) 'E-Premium' 

FROM tblAspecs a

select にこれら 5 つのステートメントを入力したら、E-Premium + F-Premium を新しい列に合計できるようにしたいと考えています。私はいつもこのようにすることができました:

  ,CAST(((A.EndorsementRate * a.Loi / 100) + (a.FormRate * a.LoI / 100)) AS DECIMAL(38,2)) 'Total Premium'

...しかし、それはかなりずさんでかさばるようです。簡単にできるように、個々の保険料を保存する方法はありますかCAST((F-Premium + E-Premium) AS DECIMAL(38,2)) 'Total Premium'

かさばる方法では、F-Premium と E-Premium が動的のままにならないため、それらの計算方法を変更した場合は、Total Premium 列の計算も変更する必要があります。

Microsoft SQL Server Management Studio 2010 の使用

4

1 に答える 1

3

共通テーブル式を調べます。

次のようになります。

;WITH [Data]
(
    [FormRate],
    [Liability],
    [FormPremium],
    [EndorsementRate],
    [EndorsementPremium]
)
AS
(
    SELECT
         a.[FormRate],
         a.[LoI] AS [Liability],
         CAST((a.[FormRate] * a.[LoI] / 100) AS DECIMAL(38,2)),
         a.[EndorsementRate],
         CAST((a.[EndorsementRate] * a.[LoI] / 100) AS DECIMAL(38,2)) 
    FROM 
        tblAspecs a
)
SELECT
    [Data].*,
    CAST(([Data].[FormPremium] + [Data].[EndorsementPremium]) AS DECIMAL(38,2)) 'Total Premium'
FROM
    [Data]
于 2012-08-20T18:46:16.720 に答える