pha*_*unk 1 select alias columnname sql-server-2008
一旦我设置了这样的列名 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]
Run Code Online (Sandbox Code Playgroud)
在同一个选择中我想要总和[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]
Run Code Online (Sandbox Code Playgroud)
在这个例子中没问题,但我有更多的列,很难遵循.如果我必须使用这个列([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]
Run Code Online (Sandbox Code Playgroud)
它甚至可能吗?
不,你不能在同一个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
...
Run Code Online (Sandbox Code Playgroud)
或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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2554 次 |
| 最近记录: |