使用别名作为列

时间:2014-02-25 12:10:48

标签: sql sql-server sql-server-2008

我正在使用此查询来计算年度财务值。

select [Year],
       [FinanceValue-2014],
       [FinanceValue-2013],
       [FinanceValue-2012],
       [FinanceValue-2014]-[FinanceValue-2013] as [FinanceValue Variance]

现在我需要将[FinanceValue Variance] * 2.50相乘,为此我如何在查询中使用别名作为列。我尝试了这个但是没有用。

 select [Year],
        [FinanceValue-2014],
        [FinanceValue-2013],
        [FinanceValue-2012],
        [FinanceValue-2014]-[FinanceValue-2013] as [FinanceValue Variance],
        [FinanceValue Variance] * 2.50    as [NewVariance] 
from Finance

SumofVariance输出将类似于5690.5893656另外我如何显示SumofVariance来舍入4个小数位,如5690.5894。真的很感激任何帮助。

3 个答案:

答案 0 :(得分:2)

这可以使用表格表达式完成,如下所示。在外部查询的任何子句中,您可以引用在内部查询的SELECT子句中分配的列别名。这有助于您解决这样的事实:您无法引用在SELECT子句之前逻辑处理的查询子句中的SELECT子句中指定的列别名(例如,WHERE或GROUP BY)。

所以写作:

select [Year],
       [FinanceValue-2014],
       [FinanceValue-2013],
       [FinanceValue-2012],
       [FinanceValue Variance],
       Round([FinanceValue Variance] * 2.50,4) as [NewVariance]
from (
select [Year],
       [FinanceValue-2014],
       [FinanceValue-2013],
       [FinanceValue-2012],
       [FinanceValue-2014]-[FinanceValue-2013] as [FinanceValue Variance]      
from Finance)T

答案 1 :(得分:1)

使用CROSS APPLY创建别名

SELECT [Year],
       [FinanceValue-2014],
       [FinanceValue-2013],
       [FinanceValue-2012],
       [FinanceValue Variance],
       [FinanceValue Variance] * 2.50    as [NewVariance] 
FROM Finance
     CROSS APPLY (
        SELECT [FinanceValue-2014]-[FinanceValue-2013] as [FinanceValue Variance]
     ) AS CA1

答案 2 :(得分:0)

我很确定在进行其他计算时你不能使用别名。您将完成全部计算,然后将其替换为。