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

让我说我在某个桌子上有一个巨大的选择.列的一个值是使用复杂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,complex stuff [ColumnA].. from table ...
) t

你必须为这个表引入别名(在上面的t中,在关闭括号之后),即使你不会使用它.

(等同 – 假设您使用sql Server 2005或更高版本 – 您可以将现有查询移动到CTE):

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

如果您有多个级别的部分计算完成,CTE往往会更清洁,即,如果您现在有一个依赖于ColumnB的计算来包含在查询中.

相关文章

SELECT a.*,b.dp_name,c.pa_name,fm_name=(CASE WHEN a.fm_n...
if not exists(select name from syscolumns where name=&am...
select a.*,pano=a.pa_no,b.pa_name,f.dp_name,e.fw_state_n...
要在 SQL Server 2019 中设置定时自动重启,可以使用 Window...
您收到的错误消息表明数据库 'EastRiver' 的...
首先我需要查询出需要使用SQL Server Profiler跟踪的数据库标...