使用列的值为另一列(SQL Server)?

gra*_*ady 16 sql sql-server calculated-columns

假设我在某张桌子上有很大的选择.使用复数logc计算列的一个值,并将其称为ColumnA.现在,对于另一列,我需要来自ColumnA的值并向其添加一些其他静态值.

示例SQL:

select table.id, table.number, complex stuff [ColumnA], [ColumnA] + 10 .. from table ...
Run Code Online (Sandbox Code Playgroud)

[ColumnA] + 10是什么即时寻找.复杂的东西是一个巨大的案例/何时阻止.

想法?

Dam*_*ver 19

如果要引用在SELECT子句中计算的值,则需要将现有查询移动到子SELECT中:

SELECT
    /* Other columns */,
    ColumnA,
    ColumnA + 10 as ColumnB
FROM
(select table.id, table.number, complex stuff [ColumnA].. from table ...
) t
Run Code Online (Sandbox Code Playgroud)

你必须为这个表引入一个别名(在上面t,在结束括号之后),即使你不打算使用它.

(等效 - 假设您使用的是SQL Server 2005或更高版本 - 您可以将现有查询移动到CTE中):

;WITH PartialResults as (
     select table.id, table.number, complex stuff [ColumnA].. from table ...
)
SELECT /* other columns */, ColumnA, ColumnA+10 as ColumnB from PartialResults
Run Code Online (Sandbox Code Playgroud)

如果你已经完成了多个级别的部分计算,那么CTE往往看起来更干净,即如果你现在有一个依赖于ColumnB的计算要包含在你的查询中.