SQL语句as后,怎么直接使用这个列?

SQL code

第一种:
select ISNULL(列1,0)as A,  (列B+A) as B from 表 
第二种:
select ISNULL(列1,0)as A,  (列B+ISNULL(列1,0)) as B from 表

第一种,好像是不行的。。
第二种才可以的....

我想问下:
第二种又把 isnull(列1,0) 执行一下了呢..
我实际的SQL 还要乘除,等操作的.... 
有没有办法,,像第一种的写法?!  可以 直接用 A 呢?!!

作者: feiazifeiazi   发布时间: 2011-06-10

SQL SERVER 中不能使用当前级别的别名
可以嵌套:
SQL code
select A,A+列B as B from (select ISNULL(列1,0)as A,列B from 表 ) aa

作者: maco_wang   发布时间: 2011-06-10

SQL code
你要看看 select 的执行顺序,as A 取了别名后不能同级马上用,
不过 order by A 却可以,因为 order 的执行顺序 是 在 select 取别名之后

作者: abcjun188   发布时间: 2011-06-10

那就声明个参数@A

作者: chuanzhang5687   发布时间: 2011-06-10

SQL code

declare @A;
select @A= ISNULL(列1,0),  (列B+ISNULL(列1,0)) as B from

作者: chuanzhang5687   发布时间: 2011-06-10

忘了给@A加类型了

作者: chuanzhang5687   发布时间: 2011-06-10