我可以在SQL的Select语句中临时存储一个值吗?

我可以在SQL的Select语句中临时存储一个值吗?,select,store,formula,ssms,temporary-objects,Select,Store,Formula,Ssms,Temporary Objects,在我的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 DECI

在我的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
;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]
一旦我在select中有了这五条语句,我希望能够将E-Premium+F-Premium合计到一个新的列中。我总是可以这样做:

  ,CAST(((A.EndorsementRate * a.Loi / 100) + (a.FormRate * a.LoI / 100)) AS DECIMAL(38,2)) 'Total Premium'
…但这似乎太草率和笨重了。有没有一种方法可以存储个人保费,这样我就可以做一个简单的
转换((F-Premium+E-Premium)作为十进制(38,2))“总保费”

这种庞大的方式也没有留下F-Premium和E-Premium的动态,因此如果我改变它们的计算方式,我也必须改变Total Premium列中的计算

使用Microsoft SQL Server Management Studio 2010进行研究

它看起来像这样:

 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
;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]
研究

它看起来像这样:

 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
;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]

查看其他答案上的评论有更好的方法指出我的错误Erik。这只是一个误会。我把他的最后一组演员误认为是一个完整的等式。我以为+是个*所以在看的时候,它看起来正是我想要避免的。你指出我做错了什么的机智是非常糟糕的,是论坛海报中非常刻板的风格。你提到了网站规范,但很明显,你不认为坚持其他网站规范的重要性,即使用得体高于一切。我已经发布了一些问题和评论,到目前为止,你表现出了我所见过的最起码的专业精神。只有你的机智才能阻止用户。查看其他答案上的评论有更好的方法指出我的错误Erik。这只是一个误会。我把他的最后一组演员误认为是一个完整的等式。我以为+是个*所以在看的时候,它看起来正是我想要避免的。你指出我做错了什么的机智是非常糟糕的,是论坛海报中非常刻板的风格。你提到了网站规范,但很明显,你不认为坚持其他网站规范的重要性,即使用得体高于一切。我已经发布了一些问题和评论,到目前为止,你表现出了我所见过的最起码的专业精神。仅凭你的机智就能阻止用户。