可以说我在某张桌子上有很多选择。列的一个值是使用复数logc及其称为ColumnA来计算的。现在,对于另一列,我需要ColumnA中的值,并向其中添加一些其他静态值。

示例SQL:

select table.id, table.number, complex stuff [ColumnA], [ColumnA] + 10 .. from table ...


我正在寻找[ColumnA] + 10。复杂的东西是一个巨大的案例/当块。

有想法吗?

最佳答案

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

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


即使您不打算使用该表,也必须为其引入别名(在上面的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


如果您已经完成了多个级别的部分计算,则CTE看起来会更干净,即如果您现在有一个取决于ColumnB的计算来包含在查询中。

关于sql - 将一列的值用于另一列(SQL Server)?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5180979/

10-11 04:05