sql-server-2008 - 在同一个选择中使用别名

标签 sql-server-2008 select alias columnname

一旦我设置了这样的列名 SUM(someColumn) AS [ColumnName] ,我以后如何使用它?

假设我构建了一个这样的查询:

SELECT SUM(foo.A + foo.B + foo.C + foo.D + foo.E) AS [TotalFoo],
       SUM(bar.A + bar.B + bar.C + bar.D + bar.E) AS [TotalBar],
       -- I need [TotalFooBar]

在同一个选择中,我想要总数 [TotalFoo][TotalBar] .是否可以引用这些列?我可以做到很长的路要走:
SELECT SUM(foo.A + foo.B + foo.C + foo.D + foo.E) AS [TotalFoo],
       SUM(bar.A + bar.B + bar.C + bar.D + bar.E) AS [TotalBar],
       SUM((foo.A + foo.B + foo.C + foo.D + foo.E) +
           (bar.A + bar.B + bar.C + bar.D + bar.E)) AS [TotalFooBar]

在这个例子中没问题,但我有 更多列,很难遵循。然后如果我必须使用这个列 ([TotalFooBar]) 怎么办?我每次都必须重写整个 SUM 吗?
我正在寻找的是这样的:
SELECT SUM(foo.A + foo.B + foo.C + foo.D + foo.E) AS [TotalFoo],
       SUM(bar.A + bar.B + bar.C + bar.D + bar.E) AS [TotalBar],
       SUM([TotalFoo] + [TotalBar]) AS [TotalFooBar]

甚至有可能吗?

最佳答案

,您不能在同一个 SELECT 中执行此操作语句,但您可以使用子查询:

SELECT 
  TotalFoo,
  TotalBar,
  TotalFoo + TotalBar AS TotalFooBar
FROM
(
    SELECT SUM(foo.A + foo.B + foo.C + foo.D + foo.E) AS [TotalFoo],
           SUM(bar.A + bar.B + bar.C + bar.D + bar.E) AS [TotalBar],
           ...
    FROM ...
) AS sub
...

或 CTE:
WITH CTE
AS
(
   SELECT SUM(foo.A + foo.B + foo.C + foo.D + foo.E) AS [TotalFoo],
          SUM(bar.A + bar.B + bar.C + bar.D + bar.E) AS [TotalBar],
          ...
   FROM ...
)
SELECT 
  TotalFoo,
  TotalBar,
  TotalFoo + TotalBar AS TotalFooBar
FROM CTE

关于sql-server-2008 - 在同一个选择中使用别名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16611902/

相关文章:

c++ - Olve Maudal 的 C++ 测验背后的解释(别名模板)

sql-server-2008 - 查看数据库表关系树的方法?

sql-server - 在 SQL Server 2008 中实现行级安全性

c# - 从 SQL Server 2008 数据库中选择列中的所有值?

mysql - 获取当月记录

javascript - 将选择选项值传递到操作属性中,以便它可以作为 url 传递并打开网站

javascript - 进行选择下拉列表而不显示值

sql - 状态更改之间的天数

c - 在 Windows PowerShell 中为 GCC 设置别名

alias - 默认开启 git log 参数