使用某个表达式作为输出的一列时,如何在Where条件中直接使用该列名作判断条件.

大家好!

我的问题是这样的:
当我们使用某个表达式作为输出的一列时,我们无法再Where条件中直接使用该列作判断条件.
例如下面的SQL语句:
select id, (c1 + c2) as s
from t1
where s > 100
SQL Server 报错: "列名 s 无效"

当然,写成
select id, (c1 + c2) as s
from t1
where (c1 + c2) > 100
就没问题了.

可是当表达式复杂时就很繁琐了.

有没有可以在Where中使用这样的列名的办法?
或者有什么其他办法可以解决这类问题呢?

谢谢你们的指教!

---------------------------------------------------------------

可以这样:
select id, (c1 + c2) as s
into #Temp
from t1

select *
from #Temp
where a>100

---------------------------------------------------------------

select a.* from
(select id, (c1 + c2) as s
from t1) a
where s > 100

---------------------------------------------------------------

select a.* from (select id, c = c1+c2 from t1)a
where c > 100

Published At
Categories with 数据库类
comments powered by Disqus