如何在SUM语句中使用别名?

maw*_*urn 1 sql sql-server sql-server-2008

我不确定如何说出问题,我知道措辞不好,但问题本身很简单.

这就是我想要做的.

 SELECT /*stuff*/
      , ISNULL (a.z, a.y) AS "c1"
      , SUM(a.x - c1) AS "c2"
 /* more stuff */
Run Code Online (Sandbox Code Playgroud)

这就是发生的事情.

列名称"c1"无效.

我甚至不确定我想做的事情是否可行.我总是可以在代码中的其他地方执行此操作,但我尝试让SQL为我完成大部分工作.

我正在使用SQL Server 2008 R2.

Tar*_*ryn 5

您可以将查询放在另一个查询中以使用别名

SELECT Sum(a.x - c1) as c2
FROM
(
    SELECT /*stuff*/
      , ISNULL (a.z, a.y) AS "c1"
     /* more stuff */
) a
Run Code Online (Sandbox Code Playgroud)

要么

SELECT /*stuff*/
      , ISNULL (a.z, a.y) AS "c1"
      , SUM(a.x - ISNULL (a.z, a.y)) AS "c2"
 /* more stuff */
Run Code Online (Sandbox Code Playgroud)