可以说我在某张桌子上有很多选择。列的一个值是使用复数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/