0

在我的 select 语句中,我有两个计算结果。它看起来像这样:

 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

一旦我在选择中有这五个语句,我希望能够将 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 回答